BuxtonHashmap

Pushing this out for initial review..

You'll notice that towards the last few commits I got distracted by various leaks. Thankfully using BuxtonHashmap now makes it easier to spot leaks, as we don't have pages of the old hashmap errors, just the ones in protocol.

I'll work on protocol separately, but the majority of legwork is done in this pull request. I'd like to get feedback
mainly on the test suite, and see if we need to expand it at all to ensure there are no errors at all :)

Once this work is totally completed I suggest we completely remove the old hashmap from the tree.