Rewrite ByteBufferUtil#hashcode(...) methods

The implementations of ByteBufferUtil#hashcode(...) for StaticBuffer
and ByteBuffer argument types seemed increasingly likely to go to zero
as the input size grew longer.  I found this accidentally through
Infinispan testing, where the prior implementation produced the
hashcode 0 for all StaticBuffer instances generated by the test
InfinispanCacheTitanGraphTest#testLargeJointIndexRetrieval (most of
which were nonzero overall but had many leading zero bytes).

I rewrote these methods according to the standard hashcode template in
Effective Java 2e by Josh Bloch (Item 9, page 47).

The change to hashcode(StaticBuffer) reduced the runtime of this IS
test method from about 6:30 to 0:15 on my box (minutes:seconds).  The
ByteBuffer version is untested.