Add a ViewModelLocator

This PR adds the ability to modify the way viewmodels are resolved.