Extension API

Hey so this is a work in progress, but this API has been in the works for quite a while and will allow more or less all of roots' extra functionality to be moved out of core. The extension API gives extensions the power to do just about anything necessary. As a test, I built out dynamic content entirely as an external extension, and it is working.

I'm exited about this because it makes things more modular, which has tons of benefits that I don't think are necessary to explain here. I'll be working through a few core extensions in the next week or two in an attempt to bring v3 back to feature parity with v2, then have plans for a number of additional plugins that will greatly enhance roots' power. On the immediate future docket:

- dynamic content
- precompiled templates
- browserify
- rss feed generation
- injecting content from json (local or remote)
- i18n

That being said, I'm not 100% on the extension API spec. Right now, I have it documented to the best of my ability in `docs/extensions.md`, but any suggestions on how to make the API smoother or easier to digest would be greatly appreciated. It has the power necessary, but I would like the public interface to be a bit smoother.