Add support for 'extension' ast tags.

When the parser tags a ast token with a {extension, Tag} tuple,
the Tag is passed to the extension module for compilation.

The test case for the extension module adds the functionality to write

{{ varA or varB }}

Which is equivalent to

{% if varA %}{{ varA }}{% else %}{{ varB }}{% endif %}

With a few (hrmm... ok, maybe not so few) lines of code ;)