Initial patch, Lucene tests pass, but solrj doesn't yet compile....
I factored out Hash.murmurhash3_x86_32 from Solr into Lucene's StringHelper, and cut over BytesRef.hash, TermToBytesRefAttribute.fillBytesRef, and BytesRefHash.
I left some nocommits: I think we should change TermToBytesRefAttribute to not return this hashCode? And also remove the BytesRefHash.add method that takes a hashCode? Seems awkward to make the hash code impl of BytesRefHash so public ... it should be under the hood.
I also randomized/salted the hash seed per JVM instance (poached this from Guava), by setting a common static seed on JVM init (just System.currentTimeMillis()). This should frustrate denial of service attacks, and also can catch any places where we rely on this hash function not changing across JVM instances (e.g. persisting to disk somewhere).