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.
Yes, you are correct that it is not lazy for the `EmberApp`, but it IS lazy for the `Project`. We instantiate the `Project` instance for all commands (regardless of whether or not we are going to ever invoke the `EmberApp`).  I thought you initially meant that that you wanted the `Project` to initialize in its own constructor, but now I'm fairly sure that you mean that the project model should have an `initializeAddon` method that is needed to be called before accessing `addons`. 

I am working up that change now.