MockYourDoppelgänger (Make DbSet suitable for creating test doubles)

As per design meeting discussion (http://entityframework.codeplex.com/wikipage?title=Design%20Meeting%20Notes%20-%20May%2016%2c%202013) this change makes the DbSet classes and their related classes suitable for creating test doubles by adding protected constructors and making methods virtual as appropriate.

This is somewhat fiddly because these classes are IQueryables, involve generics and non-generics, and already have a class hierarchy. I played with various implementation options including creating a null object for InternalSet/InternalQuery or adding additional types into the hierarchy but ultimately these became more messy than just testing for null InternalSet/InternalQuery, so that's where it ended up.

Methods and properties on the doubles must be implemented since there is no context or other backing classes to provide functionality. To make this clear and avoid hard-to-find issues most members throw if they are used but not implemented in the test double. The exceptions to this are Include, AsNoTracking, and AsStreaming where default no-op implementations are reasonable and useful. Also, ToString never throws, but reverts to the default .NET behavior.

Testing was done as functional tests to replicate the environment that an application developer would be using when creating test doubles--that is, without any access to internals. The test matrix includes tests for generic and non-generic DbSets crossed with completely unimplemented test doubles (mostly to test exceptions), test doubles with in-memory implementations, and test doubles created dynamically with Moq.
Runtime: Fixing a small bug in EdmFunction: StoreFunctionNameAttribute should return null unless a value has been explicitly
set. We were returning Name from this property when the actual value was null, which ended up breaking serialization among other things.
Fixing unit tests that were failing in Debug.
InceptionInsideInterception  (Ensure DbContext is in interception context for s-space command trees)

The problem here was the way EntityProviderServices is used to create the c-space command tree and then goes through the public ADO.NET API to call back into itself to then use the store provider services to create the o-space tree. In going through the public surface (CreateCommandDefinition) the interception context was lost. The fix is to add a internal virtual to EntityProviderServices that allows the interception context to be preserved when going through the "normal" path inside EF while still preserving the public surface, EntityClient behavior, and regular provider services behavior.
ZoningIn (Add timezone info to DbCommandLogger output per design meeting decision)

The code uses DateTimeOffset.Now instead of DateTime.Now. The tests didn't need to change because they are written in such a way as to not depend on the format of the DateTime output, but I did manual verification that the output now looks like:

SELECT TOP (2)
  [c].[Id] AS [Id],
  [c].[Title] AS [Title]
  FROM [dbo].[Blogs] AS [c]
  -- Executing at 5/28/2013 4:10:48 PM -07:00
  -- Completed in 1 ms with result: SqlDataReader

I also fixed CodePlex 1160 "LogCommand_logs_command_text_and_parameters test failed with Hungarian culture" while I was in the code. The fix is to use current culture to format the decimal value in the expected string for the Assert.
ContinuityEditing (Update async interception dispatcher to use a single continuation)

This change is based on code from Andriy to use the TaskCompletionSource directly inside the first continuation so as not to need a second continuation.