Use extendible hashing

Instead of expanding/contracting all buckets at the same time only one
bucket will be expanded or one node will be contracted at a time.

Unfortunately no reference implementation was used but the previous
method was adapted with minimal changes.
Use unordered buckets
Add note that implementation now differs from elixir's HashDict
Update benchmark