EF 6.1: Fix for #1966 - Consolidate annotation indexes and Migrations FK indexes

 Completes all remaining feature work on Indexes:

 - Introduces ForeignKeyIndexConvention, a store model convention which replaces the hard-coded index introduction hack in the differ. Adds back compat. compensation logic to the differ to deal with pre 6.1 indexes.
 - Adds RenameIndexOperation, a new migrations op for index renaming and associated differ detection logic.
 - Various differ and SQL/CLR code gen changes, primarily to support the new op.
 - Enables consistent special character handling for index names. Had to tweak index annotation serialization format slightly.

Work Item: 1966
Merge branch 'master' of https://git01.codeplex.com/entityframework
Merge branch 'master' of https://git01.codeplex.com/entityframework
Merge branch 'master' of https://git01.codeplex.com/entityframework
Issue 2176: Regression in 6.0.2 -> 6.1: TPH with specified discriminator does not work
Issue 866: Naming a discriminator column "Discriminator" changes mapping behaviour
  Problem:
    When configuring a discriminator named "Discriminator" it is mapped to the column created for the default discriminator. At a later stage the default discriminator is removed resulting in an invalid configuration.
  Solution:
    If a naming conflict is detected uniquify the default discriminator column.

Issue 2161: Regression in 6.0.2 -> 6.1: TPH with only 1 implementation breaking change
  Problem:
    When there there is only one concrete type mapped the discriminator isn't removed because in 6.1 we started mapping the abstract type by default.
  Solution:
    Remove the discriminator condition from the abstract type so it doesn't count for the redundancy check.

Workitems: 866, 2161, 2176
Issue 2214 - EFToolsMsi.wixproj failing to find files from locally packed and installed EntityFramework package. There's a bug in nuget. This works around that bug by copying only the non-symbols nupkgs to another directory before installing from them.
DoubleDoubleToilAndTrouble

Handle the fact that SQL Compact allows same constraint name
for two or more tables - issue #2197
Merge branch 'master' of https://git01.codeplex.com/entityframework
Merge branch 'master' of https://git01.codeplex.com/entityframework
Fix for #2167

Work Item: 2167
Legacy And Forgotten

SSDL changes in fix #2197 were not included with the Legacy provider SSDL,
this remedies this omission
Pulling in fix ad3dd055bb7852afd9c42ce9671e29b5bd0a3d09. Fix to allow EF6 tooling to open models from EF5 and earlier which have properties with decimal types with unbounded facet values.
CodePlex 2181: Null reference exception in view gen in EF 6.0+ after upgrading from 6.0-beta1

Code in view generation that builds an update view containing a case on the types in a hierarchy assumes that a non-nullable column must have a default value. A change from 2012 made the Discriminator column not nullable (used to be nullable) without specifying a default. The scenario that hits that code path detects that a default value is not specified and attempts to report a view generation error but fails with null reference exception while building the error message.
The fix removes the line of code that appends additional information to the error message, and which causes NullReferenceException, because the message already contains enough information to diagnose the corresponding issue. The fix also specifies a default value of "(Undefined)" for a Discriminator column to satisfy the assumptions in the view generation code.
Merge branch 'master' of https://git01.codeplex.com/entityframework
Changing version number to 6.1.2
Issue 2138: Wrapping providers fail with ProviderIncompatibleException in EF 6.1 with Code First

Problem:
  When a wrapped provider is resolving the ExecutionStrategy factory it uses the original type to get the IProviderInvariantName, but when a wrapping provider is used at ADO.Net level the original type was unregistered thus resulting in a failure.

Solution:
  The providers can hardcode the provider invariant name to be used for ExecutionStrategy resolution.

workitem: 2138
Reverting 7df1cc8076a5f50c4055ce81d126dbbb1cb87cf3 - put VersionRelease back to 1
Merge branch 'master' of https://git01.codeplex.com/forks/erikej/legacyandforgotten into ErikEJ/LegacyAndForgotten
CodePlex 2160: group by on nullable reference results in empty group

Code in Rule_FilterOverLeftOuterJoin and Rule_FilterOverOuterApply promotes a LeftOuterJoin, OuterApply to InnerJoin and respectively CrossApply if the filter predicate does not preserve nulls for the right table. One of the cases being handled is a simple EQ predicate. However, the equality predicate is potentially expanded in the NullSemantics phase to account for NULLs. Thus the two FilterOpRules need to be deferred until after the NullSemantics phase. We already had code to defer until after the JoinElimination phase to allow that phase to eliminate redundant joins.
The fix updates the mechanism for deferring transformation rules to be a bit more generic, adds a Deferred transformations phase after the NullSemantics phase and updates the code to defer them if conditions are met.
I See System Columns

Non-updateable, nullable system columns are exposed when reverse
engineering a SQL Compact Database that has been provisioned for
Merge Replication or by Sync Framework.
This fix "hides" those columns - issue #2208