Handle IBuilder rename to IApplicationBuilder.
Renamed DbMigrator back to Migrator.
Added ProductVersion column to the migration history table. The product version is obtained from the informational version atribute on the assembly. I added the conditional compilation symbol VSBUILD to the Migrations project to have an informational version when running tests from VS.
Added code for setting max length annotations on the columns of migration history table, using same values as EF6.
Updated unit tests and added test for insterting history row with custom context key.
Navigating to the right foreign land... (Add error checking/robustness to FK/navigations in core metadata)

This came out of issues where Keys would be left dangling when attempting to build and change relationships with the fluent API. It also means that obviously wrong metadata such as navigations that don't match CLR properties are flagged early.

Sometimes we need to address properties and navigations as unified things, and sometimes as independent things. I will file an issue for us to discuss whether this means that they should be unified within the EntityType data structures. Also, navigations are currently not stored in deterministic order, which may not be a problem since they aren't used in the store model, but is something that should be considered.
Let me newgle that for you... (Support uninitialized collection navigation properties)

Issues #451, #152

Specifically:
- Collection can be null for Contains and Remove calls
- Collection is initialized if possible if null when Add is called. Same rules used for the type to instantiate as in EF6.
- Error checking for when we can't use/initialize the collection
Migrations: Add K commands (Resolves #342)