A provider can optionally accept a resolver as a parameter

- removed the need for Provider.providesResolved()
- when a Provider creates an instance it is now able to inject using the given resolver
- this allowed More specific tests for all "complex" Providers, and simplified tests for Mapping
- this has not been done completely the TDD way but I look through all the code and am sure everything but the most simple code is covered
  (e.g. there is no test for ValueProvider)
- fixes #6: the behaviour is now tested in TestLazyValueProvider.provide_returns_singleton
Renamed:
InstanceProvider -> ValueProvider
SingletonProvider -> LazyValueProvider (incl. Tests)