Update the code to use the 1.9 Hash format

This branch changes the library and specs to use the 1.9 Hash format.

On one hand, I'm not always a fan of this syntax (like when the key and value are `Symbol` objects), on the other hand it does make it absolutely clear the code is 1.9 only, so there's no mistaking our intentions.