LookDontTouch (Ensure DbContextInfo does not cause database initializer to run)

DbContextInfo is used when attempting to get information about a context at design time. The context created by CreateInstance of DbContextInfo should not allow database initialization to happen.

Since DbContextInfo now ensures that the initializer will not run in means that DbMigrator does not need special code for this, so that code is removed.
WhateverPropertyISayIAmThatsWhatImNot (CodePlex 1215: Fix private setter code to handle indexer properties correctly)

CanWriteExtended is used to check whether or not a base type contains a private setter for the property being considered. Indexers are not supported and would be filtered out anyway, but sometimes this code is called before such filtering happens. Therefor the code needs to handle indexer properties and return false.
SerialSerialization (CodePlex 1107: Allow ISafeSerialaztionData exceptions to be serialized over and over)

The issue is that due to the extralinguistic nature of deserialization none of the constructors for the exception are being called and hence SerializeObjectState event is not being hooked up on the deserialized exception. This has been fixed by making sure that the event is hooked up on the deserialized object inside the CompleteDeserialization method.
CodePlex #643 - Updated code to remove stale association types and to use column information from SSpace instead of CSpace when copying foreign key constraint.
EfHasNoRestrictions (CodePlex 1212: Remove OperationAction.Restrict)

OperationAction.Restrict is not supported by EF. This changes removes all places (that I could find) where it is referred to.
Runtime: Two fixes:

1) #1136 - Make update command trees publicly constructible

Solution: Made the ctors public and also added ToString() to DbCommandTree. ToString calls Print() which renders a textual version of the tree - highly useful when debugging/testing trees.

2) #1190 - Code First Stored Procs :: exception thrown when using stored procs to map entity with self reference and 1-1 reference to another entity with non-int key

Problem: When generating update trees for entities involved in one-to-one associations using IAs, we first need to change the relationship state to deleted before setting it to added.
Solution: Make the additional call to ChangeRelationshipState when this case is detected. In order to make the call, we need to fabricate a second stub principal entity and that entity needs a key different from the stub entity we are using to set the relationship state to added (otherwise state manager validation will fail), so I had to add the ability to generate fake key values for the stub principal. I also noticed that we were not handling spatial keys correctly and so I fixed that too.

Work Item: 1136, 1190
Merge branch 'master' of https://git01.codeplex.com/entityframework