Refactoring ServiceCollection

* Remove use of IConfiguration from ServiceCollection
* Removing the Add* methods from IServiceCollection that don't accept an
  IServiceDescriptor

Fixes #116 #117
Put the `implementationFactory` param on it's own line and make it [NotNull].