Added shifting operations

Rather than using 5 bit immediates for the second form of the multiply
and divide instructions, the 5 bits are used for a shift value. 16bit
words only need a 4 bit shift value, so the highest bit is used to
indicate arithmetic vs logic shifts.

This could still be implemented with just a divider and multiplier, but
also opens the opportunity to add a barrel shifter.

This allows bytes to be easily extracted/packed into 16bit values and
removes the need to add byte loads and stores. Additionally, it gives
the multiply/divide immediate values more range at the expense of
limited range.