`Dispatcher` is the outermost layer of the framework, responsible for both receiving the initial
HTTP request and sending back a response at the end of the request's life cycle.				
After either receiving or instantiating a `Request` object instance, the `Dispatcher` passes that
instance to the `Router`, which produces the parameters necessary to dispatch the request
(unless no route matches, in which case an exception is thrown).

Using these parameters, the `Dispatcher` loads and instantiates the correct `Controller` object,
and passes it the `Request` object instance. The `Controller` returns a `Response` object to the
`Dispatcher`, where the headers and content are rendered and sent to the browser.