[NuGet] Prevent all NuGet packages being removed when retargeting.

Previously when retargeting multiple packages in one step, by right
clicking the Packages node in the Solution window and selecting
Retarget, if the first packages failed to be reinstalled, due to
being incompatible with the new project target framework, then the
project would be left with no NuGet packages installed.

A simple way to reproduce this is to add Json.NET and Moq to the
project and then change the project target framework to .NET 2.0.
The Moq NuGet package has no assemblies for .NET 2.0 and is
incompatible. Json.NET is compatible. On retargeting all the
packages in one step the end result would be that Moq failed to be
reinstalled which then prevented the Json.NET from being installed
and the project no longer has any NuGet packages.

The original implementation was based on how Visual Studio works where
it uninstalls all the NuGet packages first and then tries to install
them again. If one of the re-installs fails then it can leave the
project with missing NuGet packages, sometimes all of the packages.

Now with the new implementation each individual package is retargeted
one at a time so the worst that can happen is one package is
uninstalled and fails to be reinstalled because it is incompatible.
On the first failure the retargeting will stop. This approach is
equivalent to selecting each NuGet package in the Solution window and
retargeting them one at a time. It is also safer than the original
approach.