Fix for #1662 - [Performance] Regression introduced to EdmModelDiffer

- Problem: In fixing #1576, we made the table matching XLinq query more robust but also more complex and significantly slower.
- Solution:
  1) Special-case the differ to short-circuit in the presence of identical XDocs.
  2) Re-wrote the hot-path in terms of EDM metadata and adding local data caching where appropriate.
- Results: Less code and now runs on par or faster than EF5.

Work Item: 1662
Second attempt to fix build break from older compiler.
Merge branch 'hotfix-6.0.1'
Fix build breaks caused by merge from hotfix-6.0.1
Reverting 6.0.1 change to allow EDM identifiers that start with an underscore. The fix causes some unanticipated issues in Code First and the plan is now to take this in 6.1 instead of 6.0.1
Merge branch 'hotfix-6.0.1'
Enable StyleCop during build
Fix StyleCop errors
Further underscoring divergence from the vision (Fix for 1654: Support for identifiers starting with underscore)

Allow EDM identifiers to start with an underscore in both code regular expressions and V3 schemas. Also added some functional test coverage that checks validation of CSDL/MSL/SSDL with everything underscored and round tripping using Code First.

Note that Code First would previously fail when encountering a property containing underscores because there would be no way for O/C mapping to work. This means that making work now is not a breaking change in the way some convention changes can be.
adding infrastructure for provider agnostic tests + a small sample/proof of concept - moving Include tests to provider agnostic suite. CR: AnSvyryd
Make PowerTools work again

Ever since EntityFramework.dll found its way into Visual Studio's assembly resolution path, the PowerTools have been broken. This fix updates the way we check if a type derives from DbContext. It ensures we use use the version of EF installed in the user's project and not the one VS finds by default. Some fix-up also had to be done to the user's config file in order to resolve the correct version. This work is part of #1165.
It's not you, it's me... (1678: AssemblyInformationalVersion is required by MigrationCodeGenerator)

The issue here was that CSharpMigrationCodeGenerator and VisualBasicMigrationCodeGenerator were using GetType() as a way of putting the EF assembly version into the generated code attribute. But if you are using a subclass of one of these generators, then you end up with the assembly version of the assembly containing the subclass. (This could be considered correct, but the original intent which still makes sense was to have the EF version here.) Further, if your assembly doesn't have an informational version attribute, then you get an exception. The fix is to always take the version from the EF assembly.
add script to setup provider agnostic runs on CI server. CR: AnSvyryd
adding provider agnostic build target to only run provider agnostic tests
CodePlex 1668: ReadOnlyMetadataCollection requires the internal collection to be a MetadataCollection (methods that lookup by identity cast to MetadataCollection). When a simple List is passed the code was copying the content into a new MetadataCollection. However the metadata collection is supported by a list, so this fix adds ability to create the metadata collection over the original list instead of copying.
Caught in the web... (1615: Avoid loading System.Web when not appropriate)

System.Web is almost always available, but we shouldn't use it unless we are actually running as a traditional web app and hence it is already loaded. Loading it anyway increases memory footprint unnecessarily. This change checks where System.Web is loaded before attempting to use it.
PowerTools: Update start-up project discovery logic to handle nested projects

Work Item: 214
This change enables the SqlAzureExecutionStrategy to all tests and adds a [UseDefaultExecutionPolicy] annotation to explicitly exclude tests from the SqlAzureExecutionPolicy
Updated Partial trust tests to work and all tests to use an updated TestHelpers/TestSqlAzureExecutionStrategy.cs
Finally got the SqlAzureExecutionPolicy working on the partial trust tests by adding an interface that can be implemented