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.
Would you prefer that only Array.to_toml and Hash.to_toml accept path or do you not like that it defaults to an empty string?