Add support for custom tags (subset of jinja2 extension/parser api)

Have a look and see. It's an early cut, but the tests are based on our real-world code.

This could easily be used to implement the [jinja2 i18n extension](https://github.com/mitsuhiko/jinja2/blob/master/jinja2/ext.py#L153). We're going to be writing this in fireplace as a wrapper around webL10n. The "should allow complicated custom tag compilation" test accurately reflects what they (and we) do IRL.