Migrations: Fix for #946 - Migrations: Context key length hard-coded to 512

Problem: In fixing #535 we started auto-truncating context key on save to 512 chars, which could break when history table customization is used, particularly from a provider.
Solution: Probe the history context model for the max lengths of the MigrationId and ContextKey columns. Centralize the handling of auto-truncating in HistoryRepository.

Other changes:

1) Ensure we truncate existing data on SQL Server when upgrading from 5 to 6.
2) Detect the case when we are upgrading from 5 to 6 and a custom history context factory has been configured so we can throw a descriptive error message.
3) Add a new alter column operation to the 5 to 6 history table upgrade so that the column length is narrowed to the new default value (150). NB. This is only relevant to CE as the 5-6 upgrade ops are rewritten as a table rebuild on SQL Server. On CE, this upgrade can fail if there exists a migration whose id > 150 chars. I discussed with Diego and we agreed that the probability of anyone hitting this is extremely low and so we are happy to live with this vs. the alternative of implementing a separate history table rebuild code path for CE.
4) Fixed a minor bug I noticed in scripting against CE, namely that we could generate a leading "GO" _before_ the first SQL statement.

Work Item: 946
Changing DbExecutionStrategy to reset state instead of throwing

Workitem: 1274
Adding more validation to lightweight primitive properties conventions.

Workitem: 1047
Code First: Fix for #1319 - Stored Procs :: error during scaffold migration when trying to map abstract entity with self reference to Stored Procedures (trying to create abstract classes)

Fixed the remaining places where the modification command tree generator could potentially try and instantiate abstract CLR types.

Work Item: 1319
Migrations: Fix for #1245 - EF Stored Procs :: Many-Many self reference mapped to stored procedures throws

Problem: Modification command tree generation for many-to-many self-refs would result in duplicate OSM entries.
Solution: For many-to-many self-refs, use the same entity instance for faking both ends of the OSM relationship entry.

Work Item: 1245
CodePlex #1258: ViewGen creates different hashes for the same model - Added overrides for GetHashCode and Equals to RefType such that instances that refer to the same EntityTypeBase are considered equivalent, and thus wont be visited multiple times while computing the model hash
CodePlex #1243: Auto-compiled queries don't work correctly with DateTime and DateTimeOffset constant values that differ in the millisecond range - Added code to ExpressionKeyGen to output the constants in a format that includes milliseconds
Adding AssemblyMetadata("Servicing", "true") to the runtime assemblies.

Workitem: 1336
Migrations: Fix for #611 - Migrations doesn't handle column names with periods

Problems:

1) C#/VB code generators didn't scrub names when generating expressions for inline PK, FK and Index APIs
2) When property names get scrubbed, we generate the name argument containing the un-scrubbed name, however, we weren't using this un-scrubbed from the inline PK, FK and Index APIs.

Solution: Ensure the property names generated for inline PK, FK and Index APIs are scrubbed. Additionally, change the column name resolution for those APIs to use the column model name.

Work Item: 611
Migrations: Fix for #1277 - Stored Procs :: NullReferenceException when trying to scaffold migration for entity with Enum Key that is mapped to stored procedures

Solution: Needed to use EdmProperty.UnderlyingPrimitiveType to correctly account for enum keys.

Work Item: 1277
Fix for https://entityframework.codeplex.com/workitem/1054
Syncing up xml docs for Async methods with updated xml docs for sync versions
TagYou'reIt - Adding Tags and Title element to nuspecs
https://entityframework.codeplex.com/workitem/401
Adding missing ConfigureAwait(false) calls to avoid deadlocks in UI and web applications.

Workitem: 1284
Migrations: Fix for #295 - Migration fails when existing property becomes an FK for an existing relationship

Problem: When the user modifies an OSpace property in such a way that it now matches an FK convention, we need to first drop the column the OSpace property was previously mapped to before renaming the existing IA FK column to match the new OSpace FK.
Solution: Added the capability for the differ to detect such "orphaned" IA FK columns.

Work Item: 295
adding Functional tests for stored procedures
Merge branch 'master' of https://git01.codeplex.com/entityframework
Code First: Fix for #1343 - Stored Procs :: mapping many-many self reference to stored procedures throws if one overrides parameter names

Problem: When configuring parameter names for many-to-many self-refs, the PropertyPath alone is not enough to correctly select which parameter should be configured.
Solution: Introduce a ParameterKey class that contains both a PropertyPath _and_ a bool used to indicate whether we are addressing the left vs. right key when dealing with a many-to-many self-ref.

Work Item: 1343
Migrations: Fix for #1234 - mapping Many-Many relationship into Stored Proc, and then renaming one entity results in error during Update-Database

Problem: We were incorrectly producing a column rename op when one end of a many-to-many was renamed in OSpace.
Solution: Add a check to FK column rename detection that ensures both columns are part of the same table.

Work Item: 1234
CodePlex #1327: DbExpresssionBuilder.In does not reject empty list. An empty list is handled by SqlGen, in which case the SQL generated is the same as for a constant false expression.
CodePlex #798: Removed IMetadataItem and implemented MetadataItem.Annotations using MetadataProperty instead of DataModelAnnotation.