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.
I dont understand why

```js
a = [1];
mergeTrees(a);
```

would be result in a faster mergeTrees then
```js
a = [1];
a.concat([]); // clearly this is a waste, but it isn't a hot-path, and wont have any noticeable cost.
mergeTrees(a);
```


unless `addonTrees` can be an empty string?