Porting razorpage perf improvements from codeplex-2119

These changes were worth 2-3% of execution time on a page that makes heavy
use of attribute writing.

Making the overloads for writing a string public should show a small
throughput increase for a typical razor page.
cr feedback
Issue #1081 - XML DataContract Formatter can fail to write when instance type != declaredType.

Adding Functional tests appropriately.
Removing XmlSerializerInputFormatter from the list of Formatters.
Introducing a functional test for XmlSerializerInputFormatter.
Issue #1072: Adding Unit Tests for GetSupportedContentTypes, CanWriteResult and for XmlFormatters with DeclaredType as object.
[Fixes #1156] EmptyResult should not set status code (or do anything for that matter)
Renamed configurations to frameworks in project.json
Making UrlHelper's methods virtual
Create a pre compilation module and apis to allow meta programming
to precompile razor pages.

This is limited to sites where the .cshtml are still deployed. It's
current purpose is to speed up startup. Deploying without the razor
files is a separate feature.
Adding Api Explorer
Don't close the stream when reading AssemblyMetadata
Convert memory streams to the byte[] before passing it to roslyn
[Fixes #926] Protocol & Host name ignored when creating action link
Removed primary ctor usage
Add razor parser errors to show up
Adding support for ViewLocationExpanders to allow modifying view locations
without changing the view engine.

Fixes #1039
Changes per PR comments
Moving things to RazorViewEngineOptions and making it independent of
MvcOptions