This patch implements support for lowering the Shift intrinsics in Fortran 2008.
The SHIFTL, SHIFTR and SHIFTA intrinsics take an integer argument I and a SHIFT argument.
If SHIFT < 0, the intrinsics will always return 0
If SHIFT >= BIT_SIZE(I), the intrinsics will always return 0
The DSHIFTL and DSHIFTR intrinsics are implemented using calls to SHIFTL and SHIFTR as described in the standard.
Please add a small comment here that the "If SHIFT < 0 or SHIFT >= BIT_SIZE(I), the intrinsics will always return 0" behavior is not a Fortran requirement, but all other compilers do it.