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');
    }
}

This would be raised every time a UriContext is built - so on create and update. But this event is generic to other URI context events, if there are any. It would not apply to delete.