Refactoring ServiceCollection

* Remove use of IConfiguration from ServiceCollection
* Removing the Add* methods from IServiceCollection that don't accept an
  IServiceDescriptor

Fixes #116 #117
Depending on how `NotNull` is implemented, we might have to enforce that `TService` is a reference type here.