Changes in v3.9

*****
This version of NCrunch introduces changes to the grid protocol. This means that grid node servers
must be updated before they can be used with the new version.
*****

Adjusted NUnit integration to handle an API change introduced in NUnit v3.7. This was causing an explosion
whenever NCrunch was used with NUnit v3.7.

Fixed an issue where Microsoft.AspNetCore.TestHost support was being applied to non .NET Core projects, when
it shouldn't be.

Fixed an issue that was preventing NCrunch from making the correct .NET Core .deps file adjustments for
projects configured to use a different assembly name to their base project name.

Significantly restructured NCrunch's integration with Xunit v2. Previously, NCrunch would include the runtime
binaries for xunit in its own installation and introduce binding redirections to force user projects to always
use NCrunch's version of Xunit. This approach had several limitations, particularly around its inability to
provide proper compatibility across different versions of Xunit. Understandably, it also wasn't very popular
with the Xunit dev team.

Under the new approach, NCrunch is integrated only with Xunit's lightweight utility libraries, and relies on
Xunit's dynamic loading of runtime assemblies so that the version of Xunit being used for execution is always
the same version being referenced by the user test project. This has the following effects on NCrunch's
Xunit integration:
- Better cross version Xunit support
- Better forwards compatibility with future releases of Xunit
- Better handling of rare Xunit edge cases that may have previously failed under NCrunch, particularly in
heavily customised environments
- Improved interaction with other toolsets that use specific versions of Xunit (i.e. XBehave)

There are some trade-offs here:
- Older non RTM versions of Xunit will now likely fail to work with NCrunch (i.e. alpha/beta releases). Make
sure you upgrade if you're running a dev build of Xunit.
- Issues that are not specific to v2.1 of Xunit now have the potential to surface when running tests under
NCrunch. For example, Xunit v2.2 does not support .NET 4.5, so anyone running this version of .NET may experience
problems unless they downgrade their Xunit to v2.1. Locking NCrunch to a single version of Xunit had some
advantages in terms of very thorough testing for this version, where we now have the potential for new problems
to be discovered due to limited real-world testing of NCrunch on other Xunit versions. If you're concerned about
this, I recommend making sure you use Xunit v2.1 for the time being.
- Support for the Static Analysis framework utilisation type has been removed for Xunit. Unfortunately it just
wasn't feasible to make static analysis work with the new integration design. I doubt anyone will notice this
as static analysis has had problems for a long time under Xunit and was always disabled by default.