Updates from NCrunch integration

This pull request contains several changes that are required to allow NCrunch to reliably execute tests using Xunit V2.

The most significant change is the introduction of a configuration option that allows Xunit to report test messages synchronously via a synchronous message bus.  NCrunch requires synchronous reporting of when tests start and finish as it performs critical actions between tests.

Another change is simply a null check on the type identified for custom trait discoverers.  Custom trait discoverers can't be used with tools that discover tests using static/code analysis, as they lack the ability to call runtime user code discovery code.

I've also included a change to include the 'Arguments' property on ITestCase.  This isn't a critical change, I just thought it would be a bit tidier as test runners often work directly with this interface, and the Arguments are required to uniquely describe and identify tests.