Internal rewrite

This PR rewrites some of the internal stuff in Imbo. Notable changes:

* `Imbo\EventListener\ListenerDefinition` has been removed.
* `Imbo\Container` and `Imbo\ContainerAware` has been removed.
* Event listeners now has a static method `getSubscribedEvents` which returns events they subscribe to instead of the `getDefinition` method that returned an array of `Imbo\EventListener\ListenerDefinition` objects.
* When defining white-/blacklists for public keys in the event listener part of the configuration, the array elements you should use is now called `whitelist` and `blacklist`, instead of `include` and `exclude`.

New tests have been added and existing tests have been updated to reflect these changes. Some improvements to the docs also managed to sneak in.