Changed the methods 'matchesWith' and 'extractDataFrom' inside the route with the more descriptive 'matchesWithUrl' and 'extractDataFromUrl'.
Added a dispatcher class that will convert the route corresponding to the current URL into a page that can be rendered. Before, a route created his corresponding page himself when a page factory was passed. This gives the route too much responsibility and is hereby corrected.
Renamed the old Router to RouteCollection. The new router creates a route based on the given request, instead of a URL. The route collection still finds the right route based on the URL that is passed in from the router. Extra GET data from the URL is also extracted and passed to the request inside the router.