View Locator

This PR adds an implementation of the `IViewLocator` interface.

## How does it work?

Views are registered via their implementation of the `IViewFor<T>` interface, where T is a viewmodel type. To make this easy the following extension methods are available:

```C#
Locator.CurrentMutable.RegisterView(Type viewModelType, Type viewType, string contract = null);

Locator.CurrentMutable.RegisterView<TViewModel, TView>(string contract = null);
```

View types are resolved by the View Locator by looking for a registration of `IViewFor<T>` where T is the viewmodel we need a view for.