OSpaceForAll (Simplify Database/Model First metadata caching to enable o-space caching)

This change simplifies the way CSDL/MSL/SSDL from an EDMX is cached by caching the MetadataWorkspace instead of the item collections. Since MetadataWorkspace already supports o-space caching for Code First this means that Database First and Model First now get o-space caching.

This change also addresses two pain points for Database/Model First metadata caching. First, the cache key no longer contains the store connection string which means that cases where the same model is used against different servers will now benefit from caching. It also means that things like using MARS for one connection but then not for the next won't cause a cache miss.

Second, the timer thread that attempts to remove unused item collections has been removed. Workspaces are now never released (just as they never are for Code First) which means that the case where a server idle for 5 to 10 mins would have metadata purged will not not happen. It is still possible to clear the cache by calling MetadataWorkspace.ClearCache(), so any system using large numbers of different models in the same app domain can still do cleanup. We can also enhance this to clear only certain workspaces if user feedback indicates that this is necessary.

I had to change the way the VB tests initialize since they were actually using CLR types from the C# tests for initialization and then CLR types from the VB assembly for running the tests. This was quite bizarre and probably only happening by accident.
AGrandDayOut (Use Code First type information for o-space loading)

This change extracts the o-space type loading functionality so that it can be used independently of where the CLR types actually come from. This allows Code First to use its knowledge about CLR types to setup the mapping without needing to do any assembly scanning or type matching. This provides a small perf benefit for creating Code First context instances.

This change also allows types in the same assembly with the same name but different namespaces to be used with Code First. Nested types are not yet supported but this change also paves the way for Code First with nested types.
Updated test by calling SetInitializer<>(null) to avoid creating database
ExecutionStrategy polishing:
 * Renamed IExecutionStrategy.SupportsExistingTransaction to RetriesOnFailure
 * When ExecutionStrategy is enabled for nonbuffered queries an exception is thrown now
 * ExecutionStrategyResolver.GetService now throws for null ExecutionStrategyKey
 * DefaultSqlExecutionStrategy implements IExecutionStrategy instead of deriving from ExecutionStrategy as it has different semantics
 * Made BufferedDataRecord._fieldNameLookup initialization lazy as it isn't always needed
 * Corrected some XML comments
Correcting unit tests namespaces.
Moving unit tests to the right test classes.
Unit test refactoring:
	* Turned on Warnings as Errors for test projects
	* Separated ValidationTests
	* Removed ValidateMassage uses
	* Used more constants in AssemblyTests
	* Removed the parameterless test constructors from AssociationType,  EntityContainer, EntityType and EdmFunction as it makes debugging unit tests harder
Removing references to internal bug databases
Codeplex issue #287: SQLCE provider doesn't specify type for string and binary parameters
Running test code for Codeplex287 with RunInSqlCeTransaction to avoid impacting other tests.