Refactor and test nugetify

Aim: Get Nugetify command under test allowing changes to be made more safely.
If it worked on a solution before, it should still have the same effect on that solution now.

Notable behavioural changes:
The command line output has changed in quite a few ways.
A bunch of error cases are now handled more gracefully (such as failing to load projects).
Msbuild parameters can optionally be passed in and $(SolutionDir) is set by default

Visual Studio code coverage/metrics:

I've turned the 478 line untested Nugetify with a maintainability index of 70 into

Module Name: Maintainability Index, Block coverage, Lines covered
Nugetify: 80, 90%, 62
MSBuild: 86, 77%, 163
Nuspec: 85, 94%, 56
ReferenceAnalysers: 86, 92%, 173

Obviously numbers aren't everything - in particular, there's a huge difference between "covering" a line and testing it.

There's a bunch of stuff still to do, but since I've diverged so significantly I thought I'd best try a merge.