Adding ExecutionStrategy API:
ExecutionStrategy
IExecutionStrategy
IRetryDelayStrategy
IRetriableExceptionDetector
ExecutionStrategyKey
issue 709 and 791
Fixing 4.0 build break and changing the condition on ExecutionStrategyKey constructor to NotEmpty.
Changing CSDL namespace for Aruba model
SerialOffender (Remove need for SqlSpatialServices to implement ISerializable)

SqlSpatialServices previously implemented ISerializable just so that it could reset the instance to use the same internal data as the default "Singleton". Implementation of ISerializable is problematic for partial trust because GetObjectData is SecurityCritical.

This change refactors SqlSpatialServices and related classes such that implementation of ISerializable is not required. This primarily involves moving the SqlTypesAssembly dependent members into SqlTypesAssembly, and then always using the default SqlTypesAssembly (obtained and cached by the default loader).

The only place where a different SqlTypesAssembly is needed is when explicitly performing conversions from types that use a different underlying SQL Types assembly. This is now supported by a separate class of which instances are used internally, but which is never used in user code or serialized.