Copied ActionMethodDispatcher from ASP.NET MVC

- Improves performance of Hub method invocations
- Improves error reporting by not throwing TargetInvocationExceptions

#1486
Test ensuring HubMethodDispatcher doesn't change error handling