Re-written the view layer to be a bit simpler.

In the first sketch the view engine was abstracted behind an interface, this however adds an additional call over the engine for no benefit and as such this has been removed.

Additionally, the code written out could be a bit long. As such this has changed from `View::render(new Web\Model\Index(array("param" => "a")));` to `Web\Model\Index::render(array("param" => "a"));` for brevity. It does mean that the engine has to be set on the BaseModel to be operated on.
Added new routing system.

The router is now divided into three "roles":-

- The `TableBuilder` which takes in controllers and turns them into a stripped back array form that can be serialized
- The `Matcher` which operates on the table to find the route which matches a URL
- The `NameToUrl` which provides a URL from a parameterized URL based on a given name and parameters

The former two would normally be placed in a single `Router` class, however they are seperated to make maintenance easier and so that the NameToUrl could be exposed to the application- Matching does not need to be exposed.
Added cache & log paths to the project