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.
Maybe this function can have a default implementation which throws `NotImplementedException`?
This only executes when `getConfigFiles` returns non-empty, so…
This will have the side effect that we can also provide a default implementation for `getConfigFiles` returning `[ ]`;

I don't know, sounded good to me with DX in mind.