Do not cause unhandled exceptions for canceled tasks (fixes #1797).

HttpTaskAsyncHandler should not ever exceptions except in the case
of a really unfixable error. This change will call request.Abort() and
terminate gracefully instead of reporting an error.

issue-#1789 must also be fixed for this to handle all cases. Right now
this can only handle cases where we fail deep in infrastructure methods.
Merge branch 'codeplex-1797'
Adding IDirectRouteProvider for MVC
Add another overload