Enable properly nested addons

See #2354 for context.

This adds a `parentAddon` context for any nested addons included in a project. The `parentAddon` is supplied to each child addon on the addon instance as well as passed into the `included` hook.

The child addon is then free to determine if it should modify the `parentAddon` or the `app` from within the `included` hook.

This enables addons to have their own isolated dependencies which don't interfere with the root app's preprocessors. I.e. I can write my addon in Coffeescript, and the parent app doesn't need to depend on the Coffeescript addon directly.
> Ok, that's a bit different than the approach I outlined previously in the gist.

Sorry for being wishy-washy on it.  Hard to get the feel for it until you see it, you know?

> Is there any use case for a nested addon to have access to the root app?

I can't think of a reason that an addon would need to modify the parent apps registry, but if it did the addon that is including other addons could "handle" it by making customizing `this.registry` to add to both its own internal registry and the apps registry.

Generally speaking, if an addon wants to use ember-cli-esnext or ember-cli-coffeescript internally that should not make the top-level consuming app change its preprocessing.