[NuGet] Provide simplified API to be used when installing components.

Moved logic for installing NuGet packages and getting the packages
installed in a project from ComponentReferencingProjectAdaptor in the
Xamarin.Ide project (md-addins) into the NuGet addin.
[NuGet] Provide package add/remove events for components integration.

Extend the IPackageManagementProjectOperations interface so it has
events for a package being added or removed. Note that these events
are only fired if a package is selected in the Add Packages dialog
and added, or if the package is selected in the Solutions window and
removed. Events will not fire for any package dependencies that are
added or removed. This should be OK for components since the events
are being used as a way to detect if the NuGet packages in a project
have changed and not if a particular NuGet package was added or
removed.
[NuGet] Fix Packages folder not showing items during Component install

When a Xamarin Component that has NuGet package dependencies was being
installed the Packages folder would not show any packages until the
installation finished. This was caused by a null reference exception
in the Packages node builder since it was assuming that a full
IPackage was available in the pending package install actions. However
for a Xamarin Component installation only the package id and package
version are available. The install package action allows either the
IPackage to be specified or the package id and version. To fix this
the Packages folder node builder asks the install package action for
the package id and version, which is taken from either the IPackage
or the properties on the action itself.
[NuGet] Components integration - package install waits for completion.

NuGet packages are still installed using the background dispatcher but
the InstallPackages method waits for the NuGet packages install to
complete. This makes the API more consistent with what Visual Studio
provides. Also it fixes the problem where a Xamarin component may
have multiple NuGet packages that need to be installed and after
installing the first NuGet package the Xamarin Component would
previously show an error since it was missing packages that were
currently in the process of being installed. Now the installation is
finished before the Xamarin components UI is updated.

Also make the components API thread safe even though it is called on
the UI thread by the components addin.
Updated reference to md-addins
Updated reference to md-addins
Updated reference to md-addins
Updated reference to md-addins
Updated reference to md-addins
[NuGet] Add support for new Xamarin target frameworks.

Xamarin target frameworks:

    Xamarin.iOS
    Xamarin.Mac
    Xamarin.PlayStation3
    Xamarin.PlayStation4
    Xamarin.PlayStationVita
    Xamarin.Xbox360
    Xamarin.XboxOne

Source code changes:
    Commit: https://github.com/mrward/nuget/commit/0225161b94a87e720d2d95d43a3b08156c9c36cf
Updated reference to md-addins
Change branch for md-addins reference.
Merge branch 'master' into components-with-nuget-dependencies

Conflicts:
	version-checks
[NuGet] Fix local NuGet cache not used when installing Components.

Previously when installing a Component all NuGet packages referenced
would always be downloaded from the main NuGet.org package source even
if they existing in the local machine cache.

Now the local machine cache is checked first for the NuGet packages so
Components can be installed offline if the packages are available
locally. Also this helps with testing an unofficial NuGet package that
is not available from nuget.org since it can be copied into the local
machine cache. Components currently can only install NuGet packages
from the main NuGet.org package source.
Updated reference to md-addins
[NuGet] Support version constraints in packages.config file.

NuGet allows you to define a range of package versions that are
allowed in your project.

http://docs.nuget.org/docs/reference/versioning

This is done by editing the packages.config file and adding an
allowedVersions attribute for the installed package. For example,
the following restricts jQuery to be any version from 1.4 up to but
not including version 1.8.

  <package
    id="jQuery"
    version="1.4.1"
    targetFramework="net40"
    allowedVersions="[1.4.1,1.8)" />

The NuGet addin now supports this information when updating the
package. With the above example when updating jQuery the NuGet addin
will now update to jQuery 1.7.2 and not the latest 2.1.1 version.
Previously it would update to the latest version of the NuGet package.
This affects the Update menu items in the Solution window.

Note that if you search for another NuGet package and install a later
version that is outside the allowed range it will still install. This
is the same behaviour as Visual Studio. The allowedVersions attribute
is to prevent you from accidentally updating the version but you can
explicitly pick a later NuGet package and update to it with the Add
Packages dialog.
[NuGet] Use version constraints when checking for package updates.

A version constraint defined in the packages.config file, as shown
below, is now used when checking for package updates from a package
source. Previously always the latest version of the NuGet package
would be displayed as an update in the Solution window.

  <package
    id="jQuery"
    version="1.4.1"
    targetFramework="net40"
    allowedVersions="[1.4.1,1.8)" />

With the above constraint when the 'Check for package updates on
opening a solution' option is enabled in preferences then only jQuery
1.7.2 is shown as available update in the Solutin window.

Previously the latest version of jQuery (currently 2.1.1) would be
shown as an available update. After updating to jQuery 1.7.2 then no
further updates would be shown as available in the Solution window.
Updated reference to md-addins
Updated reference to md-addins
Updated reference to md-addins