Change implementation of AddressDiff from u16 to i32

Change `pub struct AddressDiff(pub u16);` to `pub struct AddressDiff(pub i32);`.  This primarily allows a signed relative address offset to be added to an address.