Implement macro/import functionality

Pursuant to #186, this pull request seeks to implement macro and the associate import functionality.

**Implementation notes:**

Due to the hard separation between compilation and rendering, I had to bring the `CompileContext` into the `Renderable` in a few places in order to allow the processing and import of templates specified as the result of an expression.

**Personal notes:**

This implementation feels really dirty, but I suppose it can always be improved in the future, especially once we figure out a better way of allowing expression evaluation at render time.

Also, I'm waiting on the coverage report to write some more specific tests, so I'll likely be adding another commit or two to this PR