QueryHandler.Handle overloading bug

I encountered an issue where I had a class which needed to implement multiple versions IQueryHandler. The current implementation throws an AmbiguousMatchException when the GetMethod("Handle") is called in Mediator because there were multiple overloads of the Handle method. 

Because the Mediator Send method does not use reflection, this issue does not exist when a class implements multiple versions of ICommandHandler.

After I made the change for allowing overloading the Handle method, I noticed the results from the Perf test were approximately twice as slow. To remedy this, I added logic for caching the MethodInfo instances the first time they are retrieved. The Perf test results were comparable to master after adding the caching, albeit a hair slower.