Fixes #31

This is a pretty hefty refactor. I found it easier to understand toml
generation with the majority of the generation code within the
monkey_patch rather than the generator class.

Please feel free to mark up my PR with comments as my ruby style may be a bit funky.
I don't like that `#to_toml` accepts any args.