Modify AssociatedMetadataProvider to use PropertyHelper to create accessor

Additionally change it to use TypeExtensions.GetReadableProperties to get
property list. This causes it to ignore indexers which should not be
considered.

Fixes #595
Add Model specific code generation.

By adding model specific code generation we are able to map the generic "base type" code to the cshtml file.  This also involved utilizing the CreateClassDeclaration method in the Microsoft.AspNet.Razor library.  Lastly Added a MvcCSharpChunkVisitor to add one more abstraction layer between the Microsoft.AspNet.Razor code and the Mvc code; this makes it so Mvc follows the same class structure as the base Razor parser.

#568
Modify tests to use new ModelCodeGenerator.

#568
Add @model specific tests to validate output.

#568
Addressed stylecop and CR issues.

#568
Fixing ModelChunkVisitorTest to match resource name
Fixing stylecop issues
Unwrap nullable types in PropertyHelper prior to looking up properties

Fixes #721
Ensure `TemplateInfo.FormattedModelValue` & `HtmlFieldPrefix` are not `null`
- Fixes #705
Enable us to unit test `@Html...For()` methods
- add more `DefaultTemplatesUtilities.GetHtmlHelper()` overloads, all
  returning a strongly-typed helper
- also correct that method to ensure template helpers each get a unique
  `IHtmlHelper` instance
Add `@Html.Display()` and `@Html.Editor()` tests with values in `ViewData`
Also test `string.Empty` model
Address review comments
- XML comments for changed `TemplateInfo` properties
- correct `DefaultDisplayTemplateTests` and `DefaultEditorTemplateTests` namespaces
- add a couple of low-level `TemplateInfo` tests
Fix for #617 - ViewResult can be constructed without a view engine

We want result types to be constructable without services.