Macro-based free monads

Addresses #5. Need to add a few more things (mostly the missing functions per-instance) but this is just about ready I think. Will need to test it with [monad.rs](https://github.com/epsilonz.rs) too.