Changes in v2.16

Introduced a license server to automate NCrunch license allocation.

Modified the NCrunch cache file format to reduce data redundancy and better pack code coverage information.  This has resulted 
in the following benefits:    
    - Approximate 50-60% reduction in the size of the NCrunch cache file
    - Improved initialisation and shut down performance
    - Reduced memory consumption during shut down
    - Reduced risk of OutOfMemory exceptions occuring during shut down in memory constrained environments 
	(such as when the engine is hosted in the IDE, or an x86 satellite process)

Introduced a workaround for a GC-related performance issue introduced in .NET v4.6.  This issue has been causing NCrunch to take 
an extremely long time to index code coverage during initialisation when working under an x64 satellite process (the default 
setting in most environments).

Improved NCrunch's handling of exceptions thrown in NUnit SetUpFixtures.  These will now be reported on all tests included in 
the execution task.

Fixed an issue where the first lines of unexecuted tests were being shown in green, where they should be the colour of 
uncovered lines (usually black/white).

Fixed an issue that could cause the corner spinner to become out of sync with the state of the engine under certain conditions.

Cleaned up the handling of Visual Studio builds.  When NCrunch pauses to wait for these builds, it will now report this status 
more consistently throughout the UI and will allow grid nodes to continue to process work.

Fixed an issue where NCrunch would fail to instrument assemblies containing unsafe pointer method parameters with default values.

Fixed an issue where exception messages were being reduced to a single line in the exception popup window.

Applied a new set of binding redirections to better align the NCrunch build environment with VS2015.

Turned off Microsoft's new RyuJIT engine inside the NCrunch engine and build environments.  This will be turned back on later 
when this platform is more stable and mature.  RyuJIT will remain enabled inside NCrunch test execution environments.

Fixed an issue where NCrunch was not correctly applying MSTest inheritance rules to the ExceptedExceptionAttribute.

Fixed an issue where projects with a corrupt NCrunch config file were not being correctly registered as 'Failing' inside the 
NCrunch Tests Window.  This led to misleading/inconsistent error reporting.

Fixed an issue that was causing an exception to be thrown when attempting to navigate using NCrunch shortcuts with no editor 
documents open.

Fixed an issue where NCrunch would overwrite copied resource files during a project build if it was referencing other projects 
in the solution containing resource files under the same name, and the 'Copy referenced assemblies to workspace' setting was enabled.

Added a meaningful error message for when NCrunch tries to build DNX projects, which are not correctly supported.

Fixed an issue that was preventing correct license validation on systems using the Turkish language.

Implemented a workaround for a failure caused by the attempted load of UTF-16 MSBuild targets without a preamble.

Fixed an issue where the MSTest TestContext.CurrentTestOutcome was not being specified correctly during NCrunch test runs.

Improved NCrunch's handling on systems with FIPS enabled.  NCrunch will now function normally on these systems and will be able 
to run tests using test frameworks that support FIPS.

Fixed an issue that could cause potential loader problems when building test environments for windows store applications.

Fixed an issue that was causing build errors when using FSharp type providers under VS2015.