Mapping.asEagerSingleton() creates instance immediately and always returns it

- made sure the injection only happens once
- Provider.providesResolved() so the mapping can know if injection should be done
- in tests refactored how to check if methods where called (Invokes), to remove duplicate and unreadable test code
- Scope attaches caught Error when not able to auto create Mapping for type