[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.