Refactor preprocessors to work with addons.

* Create plugin subclasses to allow usage of inheritance, but still use
  custom `toTree` methods.
* Make `preprocessJS` defer to the plugins `toTree` method
  (allows plugins to require from their own node_modules folder).
* Make `preprocessTemplates` defer to the plugins `toTree` method
  (allows plugins to require from their own node_modules folder).

These changes allow addons to add their own preprocessors during their `included` hook.

Please review the following for implementation details on the addon
side:

* [ember-cli-esnext](https://github.com/rjackson/ember-cli-esnext/blob/master/index.js)
* [sample app](https://github.com/rjackson/_____ember-cli-test/commit/4391e625f747b3d5cf9c7e8a17b8ee58db45796b)
Merge pull request #1030 from rjackson/plugin-refactor-and-addon-exposure

Refactor preprocessors to work with addons.
Add #1030 to CHANGELOG.md.
Keep --output-path up to date from build and serve commands.

* Adds ability to specify output-path for `ember server` command.
* Removes usage of `broccoli-export-tree` in favor of maintaining a
  single set of logic in the `Builder` model. (previously we had logic
  in both the `Build` task and `loadBrocfile` utility function to keep
  the output directory in sync)