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.