Add compiler plugins.

AST plugins allow consumers to preprocess and manipulate the AST. This
allows more efficiency in final compiled output and helps downstream
consumers use much more idiomatic helper code but provide a human
readable usage.

For example:

```javascript
{{#each foo in bar}}
{{/each}}
```

Can be preprocessed and transformed into:

```javascript
{{#each bar keyword="foo"}}
{{/each}}
```
Merge pull request #168 from rwjblue/add-ast-plugins

Add compiler plugins.