[NuGet] Restore packages without using NuGet.exe

Moved the package restore logic into the NuGet addin. This allows the
restore to integrate with the credential provider so the user can be
prompted for credentials for authenticated package sources or proxies.
[NuGet] Restore solution level packages.

A solution level package is not referenced by any project. Visual
studio creates a .nuget/packages.config file for the solution which
contains any solution level packages. The NuGet addin will now restore
packages defined in the solution level packages.config file as well as
those packages referenced by all the projects in the solution.