Issue 186: Make Urlhelper accessible from the formatter write path

UrlHelper currently requires a HttpControllerContext instance to be
created though all it needs is access to HttpConfiguration, HttpRouteData
and the current HttpRequestMessage. HttpConfiguration and HttpRouteData
are already available on the request message (property bag). This change
modifies the UrlHelper constructor to take a HttpRequestMessage instead. It also
changes the method GetVirtualPath on IHttpRoute and friends to take a
HttpRequestMessage instead of HttpControllerContext.
If an MVC AsyncResultWrapper encounters a timeout, it should set IsCompleted = true.

CR: bradwils
Multipart parser handling of long potential boundaries

Fixed an issue in the multipart parser where a potential boundary (something we think may be a boundary but we don't know for sure) could get larger than the size max size we allow for an actual boundary. Now we check the size and discard the potential boundary if it is larger and just treat it as the body content it is.

In addition we also check that if the parser is created with an actual boundary which is larger than we can handle then we throw an out of bounds exception up front.
Remove the FileOptions.WriteThrough option in MultiPartFileStreamProvider's File.Create
In an attempt to mitigate stress failures when uploading files using multipart, we added FileOptions.WriteThrough to the File.Create.  Subsequent investigation showed this caused a performance degradation and did not eliminate the failures.  And we have found the root failure is not caused by WebApi.
This changeset reverts that change and removes WriteThrough
This changeset addresses http://aspnetwebstack.codeplex.com/workitem/176 but it does not fix it.  We will work internally with the team responsible for System.IO to resolve this.
Try increasing the selfhost window size when a request is received instead of when it completes
This makes it possible for the window size to increase faster by trying to increase the window size when the request comes in rather than when it completes. Previously, a spike of requests coming in that took a long time to process would take a long time as the window size would only be adjusted once the request completes. This fixes that issue by increasing the window size each time a request comes in with a full window. This also solves the reentrancy problem of issue 205 by having an outstanding BeginReceiveRequest call.
Upon completion (either successful or due to an error) of reading the MIME multipart message we should dispose the parser so that we clean up any remaining items.
Adding GetExplicitWebPagesVersion to WebPagesDeployment to support WebMatrix's tooling dialog.
Removed QueryAttribute and associated query composition feature

we plan to provide much better OData support as a separate feature based on the OData library.
434951 - VS 2012 RC: VB code generated by HelperPage.WriteAttributeTo contains extra line continuation characters
Test only update:

1) Test classes must be public to be run as part of overall build.

2) Also, updated a few using statements.
Update DNOA package reference version
fix failing unit tetss caused by the new DNOA assemblies.
Modifying GetIncompatibleDependencies to not throw when the bin directory does not exist.
Temporarily enable timeout for occasionally failing test
MVC does not observe exceptions from action methods that return Task<TResult>

The problem here is that the exception on the user's task is being observed, but the the exception on the finally task isn't being observed at all. The same problem existed in WebAPI and has been fixed months ago (see HttpControllerHandler.BeginProcessRequest). This applies the same fix to MVC by using a ContinueWith instead of Finally in the async case with a lengthy explanation about why this is the desirable behavior in this case. Failure to observe the exception causes the hosting application to be torn down in .NET 4.0.
Tracing was not using Task continuations correctly and lost SynchronizationContext and IPrincipal after its end trace.

Prior to this change, when the Tracing layer was enabled, async tracers used Task.ContinueWith() for the end trace, which caused async operations to complete on a different thread when Tracing was enabled.  On WebHost, this lost Synchronization.Current as well as Thread.CurrentPrincipal, etc.

With this change Tracing uses the conventional Then/Catch/Finally pattern which honors the SynchronizationContext, allowing the Task to complete on the same thread.
This change does not require any changes to user code or affect what is traced.
Fixes issue http://aspnetwebstack.codeplex.com/workitem/23
Teeny tiny comment update
Fix HttpError InnerException serialization for XML

This changeset enables InnerExceptions to be serialized to XML by adding an HttpError as the value for the inner exception instead of the inner exception itself. Exceptions can't be serialized as an HttpError value, but HttpError knows how to special-case itself and serialize out HttpError values using the IXmlSerializable implementation.
Added try/catch around multipart parser to catch exceptions thrown by invalid header values within the MIME multipart.

Now, these exceptions are propagated to the surrounding task so that they can be dealt with by the user.
Issue #243: WebAPI does not write JSON properties if the .NET value is null
This changeset makes the default JsonMediaTypeFormatter consistent with Json.NET defaults and the default XmlMediaTypeFormatter by ensuring that null values are serialized out by default. The JsonContractResolver will still check to see if members are required or not and will override user settings by forcing required members to always be serialized out, but it will stop overriding user settings for non-required members and will serialize out null values by default. Users can still prevent null and default values from being serialized by setting the relevant settings on JsonFormatter.SerializerSettings. This changeset also includes a unit test case that fails without this change.