[NuGet] Modified NuGet AggregateRepository error handling.

Allow AggregateRepository to return packages if one repository fails.
https://github.com/mrward/nuget/commit/bdfb90a93d7165b2b3b76202ee363ec185721348

Give AggregateRepository classes access to failed repositories.
https://github.com/mrward/nuget/commit/495751e7c70c8bedc4a73de5e97bd4cbbdb59d27

Previously when IgnoreFailingRepositories was true and the Search
method was called on the AggregateRepository then if any
repository throw an exception then this exception would not be caught.
The other methods on AggregateRepository do not have this behaviour.
GetPackages, for example, will not throw an exception if one package
source throws an exception. All the methods on AggregateRepository
apart from Search use the Wrap method to handle any exceptions thrown.

Now when IgnoreFailingRepositories is true calling the Search will now
return packages even if one package source fails. The Search method
now also uses the Wrap method to handle any exceptions thrown.

When IgnoreFailingRepositories is true and a repository fails a
derived class is now informed about the failure instead of the error
just being logged.
[NuGet] Add Packages dialog -  Package sources could not be reached.

When All Sources is selected and if any one of the package sources
threw an exception then no packages were returned. Now as long as one
package source returns packages then the dialog will show the packages
and a warning indicating that some package sources could not be
reached is displayed as well as the errors for the failing package
sources. This warning text is at the top of the package list with an
orange background.

If all package sources throw an exception then the warning message
indicates that no package source could be reached along with the error
messages for each package source.

In order to support this feature two small modifications were made to
NuGet's AggregateRepository. One modification to support aggregate
package sources still returning packages even if one package source
failed. The second change was to to allow access to the failing
repositories outside of the AggregateRepository class.
[NuGet] Add Packages dialog - Clear error when search text entered.

When search text is typed into the text box any error or warning
message is now cleared. Previously just the packages were removed and
the error message was still displayed, then when the new packages were
returned the error message would be removed and a new error message
would be displayed again. This would cause the UI in the package list
to flicker.

Clearing the error message should indicate that the new search has the
an error and the error message is not related to the previously
displayed error.
[NuGet] Fix empty source selected in Add Packages dialog.

An empty package source selected in the Add Packages dialog could
occur when two enabled package sources and All Sources selected in the
Add Packages dialog. Then Configure Sources is selected and one of the
enabled package sources is unchecked in Preferences. Then on
opening the Add Packages dialog again an empty package source is
displayed as the selected package source.
[NuGet] Add Packages dialog - Fix warning displayed for valid sources.

The warning about unreachable package sources was being displayed in
the Add Packages dialog even though the invalid package source was
disabled. This could happen if the Add Packages was opened once with
All Sources selected and one failing package source, then Configure
Sources is selected, in Preferences the failing package source is
disabled and another package source which is valid is enabled. Then
on switching back to the Add Packages dialog once the packages are
returned from the valid package sources the original warning was
displayed since it was being cached in the aggregate repository. Now
when the package sources are changed in Preferences the aggregate
repository is recreated which gets rid of any cached failing
repositories and warnings.
Merge branch 'nuget-monodevelop-5.2' into nuget-support-v2
Merge branch 'nuget-monodevelop-5.2' into nuget-support-v2

Conflicts:
	main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
[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.
[NuGet] Remove unused NuGet.exe

NuGet.exe is no longer required since package restore is now done
using just NuGet.Core.dll

Removed obsolete code that was used to run NuGet.exe
[NuGet] Fix compiler warnings.
Merge branch 'nuget-monodevelop-5.2' into nuget-support-v2

Conflicts:
	main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
	main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
[NuGet] Show packages added to solution in Add Packages dialog.

Opening the Add Packages dialog will show the packages added to all
projects in the current solution.

When a package is installed this will appear at the top of the list
of packages in the Add Packages dialog. List order is recent packages,
solution packages, packages from active package source.
[NuGet] Remove solution packages when search is for package versions.

The Add Packages dialog was showing packages installed in the solution
when searching for package versions, such as

    AutoMapper version:*
[NuGet] Fix search not filtering solution packages.

Search text in the Add Packages dialog was not filtering solution
packages.
[NuGet] Restore packages for single project when updating that project.

Fixed bug 21125 - On updating any single project packages/Package,
all packages of that solution get restored.
https://bugzilla.xamarin.com/show_bug.cgi?id=21125

The NuGet addin now restores packages for the selected project instead
of for the entire solution. This affects the following actions:

1) Right click a package reference in the Packages folder and select
Update. This will now restore packages for the project that
has the package reference if that project has any missing packages.
Note that here the NuGet addin will not just restore the single
package that is selected. The reason for this is that this package may
depend on other packages which may need to be updated at the same
time. In theory it would be possible to just restore the minimal set
of packages by restoring just one, then checking its dependencies,
then restoring another, but it seems simpler and less error prone to
just to restore all the packages for the project in this case.

2) Right click the Packages folder and select Update. This will now
restore only those packages for the project if they are missing before
updating the packages.
[NuGet] Do not restore solution packages when updating one project.

Updating a package in one project or all packages in one project was
restoring the solution level packages which are in defined in the
.nuget/packages.config file. Now solution level packages are only
restored if all packages are being updated.
[NuGet] Restore packages for selected project instead of the solution.

When the Packages folder is selected in the Solution pad the Restore
menu option now restores just the packages for the selected project.
Previously it would restore all packages for the entire solution.
Merge branch 'master' into nuget-support-v2
Merge branch 'master' into nuget-support-v2