Fix abstract extension

This PR makes `AbstractExtension` a "naked extension" (so let's say I "undressed" it).
Adds a `preLoad` method and new parameters to `postLoad` so you have access to both the `Container` and the `config` in progress.
Now, each extension is required to implement `getAlias`.
Also, `AbstractConfiguration` is easier to work with, through the `setupTree` method, which creates the root node for you.
We must take care, because this is easy to override in an extension and miss the `parent::preLoad` call.

Maybe it's overkill, but this and `postLoad` can be done with a new instance of `EventDispatcher` and methods like `addPreLoadListener` and `addPostLoadListener`.

Have I gone crazy? I'd like some feedback.