minor refactoring of immediate checking code (guarded by macro)
 - replaced use of IS_SIGNED_IMM16 and IS_UNSIGNED_IMM16 with is_int16
   and is_uint16
 - added a macro SIGN_EXT_IMM16 to sign extend least significant 16
   bit of a value (e.g., imm value extracted from an instruction)
make ::addis() take const Operand& imm as parameter instead of int imm
to be consistent w/ other immediate-form instructions