Make Project aware of addons.

* Add `Project.prototype.dependencies` as a list of all dependencies &
  devDependencies in the projects `package.json`.
* Add `Project.prototype.availableAddons` as a list of all dependencies
  that contain the `ember-cli-addon` keyword.
* Add `Project.prototype.addons` as an array of instances of each addon
  found.
  * The addon package is required and a new instance is created.
  * The current project instance will be passed to the addons
    constructor.
* Update preprocessors to use the project's dependencies.
Merge pull request #1012 from rjackson/addons

Make Project aware of addons.
Incorporate addons into EmberApp.

Incorporate the `Project` models, recent addon support into `EmberApp`.

Uses the following hooks/functions that are called on each addon (if the method exists):

* `included` -- Called at the end of the `EmberApp` constructor.
* `treesFor` -- Called at various points in the building up of the final dist tree. Receives
  the name of the step that is being processed. The return value is expected to be a Broccoli
  tree.  The following steps are available with this PR:
  * `app`
  * `styles`
  * `vendor`

----

For a sample addon please take a look at: [ember-cli-pretender](https://github.com/rjackson/ember-cli-pretender/blob/master/index.js)

`ember-cli-pretender` can be used (with these changes) via the following
steps:

```bash
npm install -g ember-cli
ember new some-awesome-app
cd some-awesome-app
npm install --save-dev ember-cli-pretender
ember server
```

No modifications are needed to the `Brocfile.js` at all.
Merge pull request #1025 from rjackson/addons

Incorporate addons into EmberApp.
Add #1025 to CHANGELOG.
Do not use input trees for jshintrc lookup.
Merge pull request #1029 from rjackson/absolulte-jshint-root

Do not use input trees for jshintrc lookup.
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)