Add partial support for functions

This does not yet work with closures.
Clean up the makefile, and move tests back into lib.rs
Rewrite rendering to support closures (yay!)
Factor template out into it's own module
Factor out the parser and compiler
Minor cleanup
Make parser/compiler consume self to shrink public api

This lets us remove `pub` from a couple methods and structures.
Minor cleanup