moving remaningn migrations tests out of transitional suite. CR: BriceLam
Less is the new black - Fix for codeplex workitems 199 and 486

Whenever a variable is referenced either by means of an .Include() or by the use of a navigation property, we pull in a ScanTable object into the query tree so that the variable can be used. The ScanTable will be created under an OuterApply which eventually might get promoted to a LeftOuterJoin operation. At this point, we will have one LeftOuterJoin operation per each reference to a member of an associated table.

Next, we would expect the join elimination rules to kick-in and eliminate the unnecessary join operations. However, in the particular shape of query described by workitems 199 and 486 the joins cannot be eliminated because they are not redundant: one is a LeftOuterJoin operation while the other one is an InnerJoin operation. But why do they differ?

It turns out that at an earlier stage the FilterOpRules class will attempt to promote left outer joins to inner joins given certain assumptions. This promotion is causing the otherwise identical join statements to differ, and the join elimination process to be unable to remove one or the other. The promotion of left outer joins to inner joins at this level is unnecessary and doesn't seem to bring any value. At a later stage in the process, after we have eliminated the redundant join statements, we have a separate and more robust process for promoting left outer joins into inner joins.

The fix to this bug is simply to eliminate the join promotion from FilterOpRules.
Nullbours, everybody needs good nullbours... (Fix for 1570: UpdateException being hidden by null ref exception in WrapUpdateException)

When WrapUpdateException was written is was called only in specific cases where the UpdateException being wrapped was always created with state entries. This is now no longer the case, which means an assert would fail in Debug code and a NullReferenceException would happen in Release code. Fixed to check for null and handle in the same way as an empty list of entries.
Merge branch 'release-6.0.0'
Cleaned up redundent copies of IsSqlAzure helper method
CodePlex #1559 - When the precision facet is not set via configuration (datetime2 - DateTimePropertyConfiguration) or via convention (decimal - DecimalPropertyConvention) in the conceptual model, the null value overrides the corresponding facet in the store model during facet mapping (the case of datetimeoffset and time). This causes NullReferenceException while attempting to retrieve the facet value. Added checks that perform the override only if the conceptual model has non-null facet values.
CodePlex #1567 - Constructor of ReadOnlyMetadataCollection has an IList<T> parameter. The methods that provide access to items by identity assume that the source list is a MetadataCollection<T> and cast, resulting in InvalidCastException. The solution here is to construct the metadata collection if the input list is not of type MetadataCollection<T>. Also replaced ReadOnlyMetadataCollection<EntitySet> with ReadOnlyCollection<EntitySet> for EdmFunction and related since it relies on the collection accepting null entries.
moving migration helpers out of transitional suite. CR: BriceLam
Resolved test issue with 'Syntax error near OFFLINE' test failures on azure