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
@nmittler @opinali: Shouldn't this be:

```java
if (otherValue != null || other.containsKey(key)) {
```

With this code merged into master the http2 tests fails because of the failed equals tests.