Improve efficiency of HashDict contract

When contracting in size the HashDict does not need to relocate (re-hash) key-value pairs. It is not required because each of the deepest nodes (8 element tuples) in the trie become a bucket (list) on contraction. This bucket contains all the key-value pairs in that node (8 element tuple).

Discovered while porting hashdict to erlang's dict API (see https://github.com/fishcakez/hashdict).