Convention over convention: enabling provider conventions

Enable provider-specific conventions by allowing override of ConventionModelBuilder.
Add ModelBuilderSelector so that the convention model builder used can be determined by DI.
So if I am using both the ATS and a relational provider in the same application I will need to have both convention builders registered and choose the correct one for the provider that is currently being used. It doesn't look like this will happen with the code as it is now unless I am missing something. This is the reason for going through the DataStoreSource/DataStoreSelector code for other places where we have provider-specific functionality. It allows multiple providers to be registered with the context instance selecting which one will be used and hence the set of services that will be used.