Colder code - performance improvement of parameter checking helpers

This is a fix for bug #848. Parameter names will only be checked for NotEmpty if the value is not compliant to the check at hand. This may not be the expected behavior when the code was first written but I think it's reasonable given that:
  - It's perf-optimized for the positive case.
  - The required checks can still be in place in the hot path without causing perf interference.

All tests passing.
Merge pull request #903 from aspnet/Checker

Colder code - performance improvement of parameter checking helpers
Adding ConfigurationSource parameters for InternalIndexBuilder and InternalForeignKeyBuilder
Migration Fixes - Getting a ModelDiffer and usings in generated code
Tooling was using GetService<ModelDiffer> but that was broken now we have specialized ModelDiffers. We were also registering specialized Migrators but they were registered as Migrator in DI so you would get multiples if you registered two providers (and random behavior ensued). Swapping to have Migrator resolved thru DataStoreServices.

Also adding a missing using from generated model code.

Tested with automated tests and manually testing k ef migration commands