refactoring Mapping: extracting the Provider

* Mapping.toInstance() is now implemented using InstanceProvider