Add edit capability to `ember init`

* This has been added to edit-file-diff model in order to more easily
* abstract when `ember update` is a thing

When you run `ember init` a new option is given.  If you select it the
following events take place:

1. A tmp file containing the .diff of your file as compared to the
blueprint file
2. A child process is spawned with whatever command is set to $EDITOR
with an argument of the above tmp file path
3. On the 'close' event of this child process the diff you've edited is
applied to your file
4. the tmp file from step 1 is removed
5. normal process resumes
Handle flags on $EDITOR

This is for editors like sublime and text mate that will by default
launch and resume execution of io.  In these cases it is usually
reccomended to use the `-w` flag and to set those flags on the $EDITOR
variable in your rc file.

e.g

$EDITOR=mate becomes $EDITOR='/usr/local/bin/mate -w'

This updates the childProcess spawn to trim arguments and pass them as
appropriate.

In the case of mate -w

editor is set to `mate`
editorArgs is set to ['-w']
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.
Add error handling for unappliable patch
Add Changelog entry.
Merge pull request #1000 from rondale-sc/ember_init_edit

Add edit capability to `ember init`
Provide the environment to the application config output.
Merge pull request #1017 from rjackson/add-environment-to-global-env

Provide the environment to the application config output.
Root the `.jshintrc` lookup to the project root path.
Merge pull request #1019 from rjackson/root-path-lookup-for-jshintrc

Root the `.jshintrc` lookup to the project root path.
Add #1019 to the CHANGELOG.

[ci skip]
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.