For all ServiceDescriber and ServiceCollectionExtension methods that use
generic type parameters, add generic type constraints

Fixes #135
Basic extension to Add only if service has not been added

Needed so frameworks can use this in their AddXXX methods to prevent
duplicates
AddIfMissing instead
Rename to TryAdd
Fix spacing
Fix copy past bug
Add unit tests for AddTypeDescriptor/ContextAccessor
Add Assert
Add TryAdd overload with IEnumerable, also normalize ServiceDescriber ctor
Add unit test
Cleanup