Explicitly cast integer to int16_t before being promoted to int
Fixes 16-bit integer values not showing up as signed
Add casts for 32 and 64 bit cases just for clarity
Implementing -hash where isEqual: is implemented
Use instancetype where applicable
Increasing version