Package from the future protection

### Overall scope ###

When a user has an older version of Dynamo, it's possible that they might attempt to download a package created with a newer version of Dynamo than their current one.  This pull request adds functionality to show a simple `MessageBox` when a user attempts to do this.  They are still allowed to move forward, but have the opportunity to cancel a package download (include all of its dependencies).  

### Messagebox!? ###

I think that we could add additional improvements to the UI for this work with a nicely styled `MessageBox`, but it doesn't seem like a high priority at the moment. Much of the package manager UI uses the `MessageBox` class for stuff like this, so it could be a later project to change this.

### Other changes ###

This pull request also changes Dynamo to use the dynamopackages.com endpoint (it previously used the IP address).  Also, the user should no longer see duplicate dialogs when uninstalling a package to replace it with a newer version.  They will only see one before they download the package.

### Unit tests ###

Fairly scant, this just introduces a unit test demonstrating the version checking logic.  This method only tests the major, minor, and build numbers (major.minor.build) so users with the different revision numbers (e.g. bleeding edge users) can still share packages amongst each other without seeing the dialog.

@ikeough @Benglin 
I gathered that these methods below could potentially be called and fed with version strings coming down from the Internet. If that's the case, these public APIs might need better protection against ill-formed data (e.g. maybe the version string is in the form of ```0.7``` and not ```0.7.1.0```). I'm not sure what's the outcome of ```Select``` and ```Take(3)``` methods if the input version string is malformed, do they crash? Might need a better protection against such cases though (by adding some negative test cases, too). What do you think?