This is broken when you add custom write handlers. 

I've got another branch that fixes this up. Perhaps talk to me online about the best way to proceed with this work?

I'm _really_ unhappy with the API I've chosen. It's strengths are that it's explicit and does not rely on any global state. It's weaknesses are that it's a pain to add new types, and to have a re-usable `dumps` within a library / application.