APIs on ModelBuilder for shadow state and model snapshot.

Added APIs to ModelBuilder to be able to construct a model without requiring CLR types.
Updated the CSharpModelCodeGenerator to generated code that uses the new APIs.
Added and updated unit tests.