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.
> Sorry for being wishy-washy on it. Hard to get the feel for it until you see it, you know?

No worries, I know how it goes :) Just wanted to make sure I wasn't misunderstanding you.

> When an addon is included, it should call included on all of it's "children" and pass itself as the "app".

In that case, perhaps we don't even pass in `parentAddon` to the addon's constructor? If the parent addon becomes the value for what is now the `app` argument in `included`, then there's no need to pass it through the constructor. That feels like a much cleaner API overall actually.

Another thought - for preprocessors, this is all pretty straightforward. But are there other types of addons where the ambiguity of the first argument to `included` is problematic (perhaps because apps and addons have different public APIs)?