Time for another injection... (Refactoring of DataStoreSource)

This change splits and modifies DataStoreSource so that:
- Constructor injection is used in some places we were using the service provider directly
- The provider services (that need to be accessed abstracting based on the configuration of the current context instance) are separated from the mechanism of selection
- Allows common types to be used while still allowing extension with a specific type. For example, only the ATS provider currently has custome conventions. This means all other providers can use a common ModelBuilder/conventions. But if I want to extend EF to add a custom convention just for SQL Server I can now do that by creating a dervived SqlServerDataStoreServices class and using my new ModelBuilder/conventions in the constructor. All other providers will continue to use the same conventions. This means that for cases like that we don't need to create a derived class simply to allow external extension.
Updated tests to use transactions and to start the Redis server automatically
Fix for async query composition issue. Some other minor improvements to query framework
Turning off the functional tests to unblock CI machine
Merge branch 'dev' of https://github.com/aspnet/EntityFramework into dev