The paper in question can be referenced [here](https://courses.cs.washington.edu/courses/cse521/15sp/refs/thorup1.pdf)
This will compute a hash that is almost just as performant as the
previous hashing, but handles the case where if lower numbered bits
are all 0 and the highest bit of the length of the container is less
than the lowest bit of the key, the hash will always be 0.
* tables: initialized by default
* sets: initialized by default
* DRY: extract shared functionality
* add a changelog entry
* fix errors
* don't test include files
* make it work for sharedtables
* fix discovered bugs
* add exhaustive tests