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.
Good point. I'll change this to run through the datastore selector and push the changes to this branch.