Changes in v3.4

*****
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.
*****

****************** Main Feature *******************

The main feature of this release is support for .NET Core. This includes:
- Build support for .NET Core and .NET Standard projects

- A complete reconstruction of build and runtime dependency handling to work with .NET Core
library/package dependency structures

- A .NET Core test environment for MSTest

- A .NET Core test environment for NUnit v3

- A .NET Core test environment for XUnit v2

- Distributed processing of .NET Core solutions, including automated transfer of required NuGet packages
to remote grid nodes

- Console execution support via NCrunch console tool. Note that servers using this tool must have
dotnet.exe installed when using .NET Core

- Debugging support


Because .NET Core is still a very new platform, there are still some rough edges. These stem from
limitations within the framework itself:

- xproj/project.json based .NET Core projects are not supported by NCrunch. This is because the entire
tool system behind this structure has been deprecated by Microsoft. This means you must be running VS2017
to use NCrunch with .NET Core.

- Background exceptions thrown in the test environment cannot yet be caught by NCrunch, as .NET Core
does not yet have a global exception handler. MS are expected to release this with .NET Core v2.0 later
this year. This means you'll see intrusive process exception messages if background exceptions occur within
your code.

- Test projects compiled to x86 cannot be run on 64-bit versions of Windows. This is because of a bug
in .NET Core's handling of x86 console applications where it tries to load them with the wrong processor
architecture.


There are also a couple of areas still being worked on:

- MSpec support is not yet available for .NET Core. I'll be assessing whether it is feasible to add this.

- 'Shared' projects have some synchronisation issues still being worked out. If you enter these, just
tell NCrunch to reload the project encountering the problem.


****************** Other Changes ******************


Fixed instrumented methods not being marked correctly with initlocals property.

Added a warning for when NCrunch can't find the PDB file for a compiled assembly.

Introduced a speculative fix to try and resolve issues where overridden engine mode settings were
not always being shown in bold in the engine mode customisation window.

Fixed exception thrown on MSTest test cleanup being swallowed if the test contained an ExpectedException.

NCrunch will no longer auto-expand the tree nodes in the Configuration Window when not using the
simplified configuration mode.

When choosing to configure a project from the NCrunch Tests Window, only the 'shared' project settings
will be pre-selected in the Configuration Window when not using the simplified configuration mode.

Implemented the automatic transfer of Nuget packages stored in the local user's .nuget directory over
to remote grid nodes where grid nodes do not have required packages installed.

Fixed an issue where projects referencing assemblies using project.json or MSBuild PackageReference
were not having their dependencies correctly loaded by NCrunch at build time.

Added binding redirections to MSBuild process under VS2017 to bring this in line with the latest release.

Adjusted the NCrunch project loading process so that this will restore .NET Core Nuget packages prior
to loading projects under VS2017.

Removed old DNX integration code that was never actually used.

Fixed an issue where .NET Core projects would fail to correctly resolve project references at build time.

Fixed a performance issue around thread handling that was chewing up CPU.

Fixed an issue that was causing the NCrunch grid node to fail to build projects when it was being used
by both VS2015 and VS2017 clients.