Updated the model diffing algorithm

1. Entity types are matched by name first. Out of the remaining ones they are fuzzy matched (at least 80% of the properties must match across both entities).
2. Using the entity type pairs it finds the table pairs (currently 1 to 1)
3. Foreach table pair it builds a list of column pairs. The column are matched by the corresponding property names. Out of the remaining columns they are matched by their names. Simultaneously it builds a global map of columns, used later when matching column references from primary keys, foreign keys, indexes.
4. Using the table pairs it finds the moved, renamed, created, dropped, tables.
5. Foreach table pair:
    Using the table column pairs it finds the renamed, added, dropped, altered columns.
    It finds the primary key changes (drop, add or both).
    It finds the foreign key pairs.
    Using the foreign key pairs it finds the added, dropped foreign keys.
    It finds the index pairs.
    Using the index pairs it finds the renamed, added, dropped indexes.
Merge branch 'BetterDiffs' into dev
Added a visitor (DatabaseModelModifier) that will be used to keep the database model up to date while the migration operations are handled.
Updated code in migrator to be able to determine the source model for a migration which is the target model of the previous migration, or empty model if first.
Updated code to pass the source database model to the migration operation SQL generators instead of target model. The database model is cloned and updated as the operations are handled.
Updated code to use the migration operation sql generator factories where needed (was TODO).
Added ability to respond to synch queries - both materialized and non-materialized queries working
TODO: add same ability for asynch queries
Making public APIs virtual
Exception to the Exception - Update Migrator to expect DataStoreException

Migrator was still expecting a DbException when history table doesn't exist. But this is now a DataStoreException.

Also updating the relevant unit test. Note the unit test didn't catch this change. Catching this change would require adding functional tests that hit the actual data store exception when the table doesn't exist. There aren't any functional tests for migrations as yet.
new[] { 1, 2, 1 } (Implementation of OneToOne for 1:1 relationships in Code First)

This is mostly refactoring and tweaking of the existing OneToMany code to make it also work for OneToOne. One functional difference is in the convention for finding an FK where for 1:1 relationships the PK is used if no other property matches the FK convention.
Monster cleaning service... (A bit of cleanup in MonsterContext`.cs)

Combines the two sections of fluent API calls into one.
Refactoring ModificationCommandBatch to improve extensibility
Remove exception wrapping from query compilation
Adding unit tests for Redis Query classes
Updated the migration tool to work with K10, including core CLR:

1. ifdef-ed code from EntityFramework.Design assembly that don't compile with core CLR.
2. Replace Assembly.LoadFile with Assembly.Load and removed the References option.
3. Replace all variable names like assemblyFile with assemblyRef.
4. Using PathResolver to resolve relative paths instead of GetCurrentDirectory.
5. Updated code DbContextConfigurationExtensions.GetMigrationNamespace to cover the case of empty context namespace.
6. Updated tests.
Refactoring of result operator handling to support composition and improve perf.