JVM-compatible hash partitioner

@wvanbergen

Proof-of-concept; it may or may not be worth actually merging this (not sure if
this counts as an API change or not since it will change partitioning for people
who upgrade).

Also, I haven't actually tested to see if it gives the same value or not,
though it ought to.

My concern about algorithmic complexity attacks still stands, though the current hash is really no better against a remotely competent attacker. Mind, Kafka doesn't do key deduplication, so no matter what hash we use an attacker could just submit the same key over and over...