[NuGet] Support solution specific NuGet.Config files.

NuGet allows a solution to have its own NuGet.Config file which can
define extra package sources.

http://docs.nuget.org/docs/reference/nuget-config-file

The NuGet.Config files are loaded as a chain. For a solution in the
directory c:\a\b\c the following directories are checked by NuGet for
a NuGet.Config file:

    c:\a\b\c\.nuget\nuget.config
    c:\a\b\c\nuget.config
    c:\a\b\nuget.config
    c:\a\nuget.config
    c:\nuget.config
    User specific config file, %AppData%\NuGet\nuget.config.
[NuGet] Fix solution events doing unnecessary processing.

Create single instance of project service so the SolutionLoaded and
SolutionUnloaded events are not used in multiple project services.
Previously a breakpoint in the project service would be hit several
times when a solution is opened or closed which is confusing and also
means extra processing is being done when it is not needed.
[NuGet] Fix wrong package sources being used when updating a package.

On updating a package all the enabled package sources are used. On
changing the enabled package sources, after opening a solution, the
original set of enabled package sources were being used.

The change to support solution specific NuGet.Config files broke the
original behaviour since the package sources are reloaded when a
solution is opened or closed and the package repository cache was
still using the original set of package sources.
[NuGet] Show warnings for package sources that cannot be reached

Previously when a package was updated any warnings logged by NuGet
about package sources that could not be reached was not displayed  by
MonoDevelop. Now the warning message is logged in the Package Console
window.
[NuGet] Support installing specific package version.

The Add Packages dialog can now search for all versions of a package.

Search syntax supported:

    PackageId -version
    PackageId -v
    PackageId -ver

This returns all versions of the package ordered with the latest
version first in the list.

The package id must exactly match the package id otherwise no results
will be returned.

In the list of packages the package version is displayed instead of
the download count when a search is run for multiple package versions.
This makes it easier to see the versions without having to select each
package in the list. The download count is displayed for all other
searches.
[NuGet] Package version search is now included with original query

Move package search text into its own class so it can be parsed
and checked for the package version search parameter. Pass this new
search class around with the original query so the package version
search is not applied to the wrong search results.
[NuGet] Support searching for specific package version.

In the Add Packages dialog, specifying a version number in the search
will filter the package results return the package that exactly
matches the version specified.
[NuGet] Support searching for a range of NuGet package versions.

Add an implicit wildcard to the version number when searching for
NuGet package versions.

   NUnit -v 1        => NUnit 1.*        1.0 ≤ v < 2.0
   NUnit -v 1.2      => NUnit 1.2.*      1.2 ≤ v < 1.3
   NUnit -v 1.2.3    => NUnit 1.2.3.*    1.2.3 ≤ v < 1.2.4
   NUnit -v 1.2.3.4  => NUnit 1.2.3.4    v == 1.2.3.4

If Show pre-release packages is enabled then pre-release versions are
shown in the results and the implicit wildcards apply.

   entityframework -v 6.1.0  => 6.1.0, 6.1.0-alpha1, 6.1.0-beta1

If the version specified cannot be parsed then all versions will be
returned.
[NuGet] Make package version search option case insensitive.
Merge branch 'master' into nuget-monodevelop-5.1
Merge branch 'master' into nuget-monodevelop-5.1
[NuGet] Change package version search syntax.

Make the package version search syntax consistent with NuGet's
existing search syntax. New supported syntax is:

    PackageId version:VersionNumber

Examples:

    nunit version:2
    nunit version:2.5
    nunit version:
    nunit version:*

The last two will return all versions.
Merge branch 'nuget-monodevelop-5.1'