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.
Prevent route blueprint adding duplicates

Addresses #1035
Rename integration-test blueprint to acceptance-test

Addresses #1032
Merge pull request #1043 from jgwhite/rename-integration-test-blueprint

Rename integration-test blueprint to acceptance-test
Merge pull request #1042 from jgwhite/route-blueprint-patch

Prevent route blueprint adding duplicates
Add blueprint listing in ember help generate

Refactor help API around `printBasicHelp` and `printDetailedHelp`.

`ember help` uses `printBasicHelp`

`ember help <command-name>` prints basic and detailed help.

Implement `printDetailedHelp` in the generate command to list out
available blueprints, grouped by package.
Add changelog entry
Merge pull request #952 from jgwhite/generate-list

ember help generate
Add missing descriptions for `build`, `serve`, and `test` commands.
Merge pull request #1045 from rjackson/add-more-help-descriptions

Add missing descriptions for `build`, `serve`, and `test` commands.
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)
Merge pull request #1034 from rjackson/live-output-to-dist

Keep --output-path up to date from build and serve commands.
Use an addon to bring in ic-ajax.
remove duplicate keys from package.json
Merge pull request #1051 from simonjefford/patch-1

remove duplicate keys from package.json
Use an addon to bring in ember-data.
Allow addons to preserve `main` entry point.

This allows packages to support both standard NPM usage (where the
`main` entry point is to the actual library) AND Ember CLI usage by
using the `ember-cli-addon-main` property if it is present.

Packages like `ic-ajax` and `emberfire` can use this to support both
types of consumers.
Merge pull request #1047 from rjackson/use-addon-for-ember-cli

Use an addon to bring in ic-ajax & ember-data.