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.
since we invoke this during the constructor anyways, is there a point to lazily creating the addons?
I would prefer us to just call `this.initializeAddons()` which sets `this.addons` from within the constructor. Subsequent uses can merely enumerate `this.addons`

This isn't a big change, it just seems to remove some extra indirection. I originally thought that laziness was required, but it appears like it is not.