Boxes Revamp: Short URLs, Versions, Updates!

This is a pretty large PR. This introduces a few large features to boxes:

* **Box versioning** - All boxes can have versions now. This version information is available in metadata requested by Vagrant. New commands such as `vagrant box outdated` and new settings such as `config.vm.box_check_update` will configure how/when Vagrant checks for box updates. Boxes that don't support versions will always have version "0".

* **Shortnames for boxes** - You can now do things like `vagrant box add hashicorp/precise64`. The name and the URL are one and the same. This requires a backend. We'll be hosting one [for free public access] in the coming month or two. Of course, you don't need to use the backend we'll provide to support versions or unversioned boxes. You would need to for shortnames.

* **Multiple providers at one URL** - A single URL can now represent multiple providers. In this case, Vagrant will ask you what provider you want to download if it can't figure it out on its own. 

All of this is _fully backwards compatible_. I verified this as best I could with the tests in vagrant-spec. I have  to write new acceptance tests for the new features, however. Also, this PR adds around 100 unit tests.