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.
lets make this a non optional part of the addon API, so lets throw a useful error if it does not exist.

Additionally, is there ever a time where `included(this)` and `new Addon(this)` where the `this` differs?