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.
@rwjblue Do you think this separate DAG is necessary? Just thinking I could add edges to the existing `addonGraph` and re-topsort it to get the addons array below. I can't think of a case that the two would conflict, but I'm not sure.

I originally thought about adding these edges during the `discoverAddons` stage, but then I can't know if the first vertex in `incoming` is a child addon or just one specified in the `addonConfig.before` ...