Tweedledum and Tweedledee (765: Allow interceptors to be registered in config file and add interceptor for DbConfiguration.Loaded)

The general change here is to allow any interceptor to be registered in the app.config/web.config file. Also, a new DbConfigurationIntereceptor has been introduced with one method which is the equivalent of the DbConfiguration.Loaded event. When combined these two changes mean that the equivalent of a Loaded event handler can now be registered in the application's config file. Given this, the current mechanism for registered in Loaded event handlers in the config file has been removed.
1. Made DbCommandTree.UseDatabaseNullSemantics public and immutable. The constructors of DbCommandTree and DbQueryCommandTree take this flag as parameter, with a default value of true (other command trees types are not processed by PlanCompiler so the flag is not needed). Updated DbQueryCommandTree.FromValidExpression to also take the flag as input. Updated all calls to this method by passing the expected flag value. (if the tree is converted from linq the value is determined by the similar flag from the context, otherwise true)
2. Added Rule_IsNullOverAnything that handles the original IsNullOver... cases plus over CAST and FUNC (LEN only for now but can be extended) to be able to eliminate more unnecessary terms. To minimize risk the rule is invoked only during the NullSemantics phase.
3. Added code to handle the NE operator during the NullSemantics phase, by transforming "a NE b" into "NOT (a EQ b)"
4. Added code to detect patterns like (x IS NULL) OR (expression(x)) and mark x as not nullable while expression(x) is processed. This eliminates more terms and can be extended to more cases, though that seems not necessary at this time.
5. Made some changes to clone the nodes only when needed.
6. Added and updated test cases.

NOTE: The bug 1940 also mentions: "Investigate why forcing the TypeUsage to Nullable=true in DbExpression constructor is needed (several test cases fail if removed)." but that does not seem directly related to null semantics and should be investigated separately.
Add logic to transform a DbModel into Code First classes
Test DbModel.GetColumn
Add Visual Basic code generation support
Test CSharpCodeHelper