Extending the internal builders lifetime to match the lifetime of the ModelBuilder so that they can be used to store state.
Fixed build break caused by weird-ness with the mock library.
FixupSpeedup episode one - the slowdown menace

Entity fixup is still costly but this changeset is making it 10x faster by getting some low hanging fruit:
  - Reduction of allocations by changing .ToArray() by .ToList() when the collection is temporary.
  - Caching of values that are used constantly.
  - Accessing the same property repeatedly inside loops avoided.

The caching will probably have to be revisited in a future iteration. Here are some of the numbers I obtained:

RelationshipFixup before the change
1153252ms total (100 iterations)
17920ms 95th percentile
20988ms 99th percentile
20988ms 99.9th percentile

RelationshipFixup after the change
138670ms total (100 iterations)
1652ms 95th percentile
1944ms 99th percentile
1944ms 99.9th percentile

The closest EF6 test we have is objectctx-fixup-fk-poco
13339ms total (100 iterations)
171.74ms 95th percentile
287.71ms 99th percentile
287.71ms 99.9th percentile
Another test failure that sneaked in.
Fixing a test failure not caught before.
I traveled to Maui and Taupo researching how to test a UI - Tests for Microsoft.AspNet.Diagnostics.Entity

Padded out functional testing and added some unit tests. Also re-enabling DatabaseErrorPage tests that were recently disabled.

Also made various minor improvements to the product code:
 * Added logging
 * DatabaseErrorPage now logs errors and skips if an error/exception prevents it from displaying
 * Removed DevModeOnly setting from MigrationsEndPointOptions since different environments will be handled natively in Startup.cs (still using isDevMode to set everything visible on error page but will likely remove this #733)
 * Better error handling in MigrationsEndPointMiddleware (discussed with ASP.NET folks when to throw and when to set 4xx status codes)
 * On DatabaseErrorPage, swapped ShowMigrationStatus option to ListMigrations. ShowMigrationStatus was a left over from early work where we displayed a lot of info on the page, now that's pretty much all we show. ListMigrations would be useful if you wanted to use the error page but not display any type names etc. from your code.