Added event dispatcher and URI_CONTEXT_BUILT event

This PR adds an EventDispatcher to the AutoRouteManager and dispatches an event after each URI context is built.

This event enables the user to modify the "auto route" after it has been updated / created. Notably it would enable setting fields such as `host` on the Route document.

The `UriContext` object has access to the generated URI, the subject object (for which the route is being generated) and the route itself.

````php
class SomeEventHandler
{
    public function handleUriContextBuilt(UriContextEvent $event)
    {
        $uriContext = $event->getUriContext();

        $autoRoute = $uriContext->getAutoRoute();
        $uri = $uriContext->getUri();
        $content = $uriContext->getSubjectObject();

        if (null === $autoRoute->getId()) {
            // its a new auto route
        } else {
            // its an old one
        }

        $autoRoute->setHost('mydomain.dom');
    }
}

okay, makes sense. can you mention this reasoning about which event exists in the doc?

can you add some phpdoc here to explain when exactly the event is raised? i think its very important that the user understands exactly when the event comes, how he can change the outcome and what that means. questions i ask myself: how do i change the generated url? how do i know if this is a new document or we are updating an existing document? do i know if the url is in conflict with an existing or was that already made unique? if its already checked, what if i produce a conflict in my listener? do i need to do anything when changing an existing url to have a redirection from the old, or is that handled automatically?

the phpdoc on the event should explain the interactions that are possible, so as a user i don't have to ask myself these questions.