Fixes and improvements to IntObjectHashMap

- Rewrite with linear probing, no state array, compaction at cleanup
- Optimize keys() and values() to not use reflection
- Optimize hashCode() and equals() for efficient iteration
- Fixed equals() to not return true for equals(null)
- Optimize iterator to not allocate new Entry at each next()
- Added toString()
- Added some new unit tests
nit: the names of these methods are a little unclear.  Maybe something like valueToReturn() and valueToStore()? Not crazy about these either ... maybe you can come up with something better?