Vagrant Cloud Post-Processor

This adds a [Vagrant Cloud](https://vagrantcloud.com) post-processor.

It does the following when using the Vagrant Post-Processor:

1. Verifies the existence of the box on Vagrant Cloud
2. Creates the target version, if necessary
3. Creates the target provider
4. Prepares and uploads the `.box` file from the Vagrant post-processor artifact to Vagrant Cloud's box hosting
5. Releases the version

You should be able to `packer build` your environment and in one command have a Vagrant Box distributed and available to users of the box. When a developer runs `vagrant up` after a new version has been released, they'll be prompted to update their environment.

If you're curious about how Vagrant Cloud works, the [help](https://vagrantcloud.com/help) is a good place to start. There's also more info in the included documentation.

Also, note the changes to the Vagrant artifact, I needed a way to read the provider name from the vagrant post processor, so I used the `Id()` method on the `vagrant` artifact.

Here's a screenshot of example output:

![](https://dl.dropboxusercontent.com/s/rhs0jjy8q8tiquq/2014-06-25%20at%2012.38%20PM.png)

Example configuration:

```json
{
    "variables": {
        "version": "",
        "cloud_token": ""
    },
    "builders": [{
      ...
    }],
    "post-processors": [
      [{
          "type": "vagrant",
          "include": ["image.iso"],
          "vagrantfile_template": "vagrantfile.tpl",
          "output": "proxycore_{{.Provider}}.box"
      },
      {
          "type": "vagrant-cloud",
          "box_tag": "hashicorp/precise64",
          "access_token": "{{user `cloud_token`}}",
          "version": "{{user `version`}}"
      }]
    ]
}

```
Not a big deal but for future reference you can actually just do this: ```buf := new(bytes.Buffer)```