Add support for fallback services

- Add support for a new IsFallback on IServiceDescriptor + all overloads
- When populating service containers, IsFallback = true services are ignored when:
1. Any IsFallback = false services are found
2. Or the result of GetService is not null from the parent/fallback ServiceProvider

Added a extension method on IEnumerable of IServiceDescriptor:  RemoveDuplicateFallbackServices which all of the containers can call which encapsulates the new logic

cc @halter73 @divega @loudej @davidfowl