Rewrite vmctl in swift
In order to enable support for multiple different OS's and first boot setups, this commit rewrites VMCTL in swift from shell script.
This rewrite enables support for other operating systems and first boot setups via the Provider protocol. For example, the default provider used now is the UbuntuProvider which mimics the setup from the vmbuilders/ubuntu.sh script. The other provider implemented is the UbuntuDockerProvider. This one sets up an Ubuntu instance with a few packages and other niceties ready to go for using it as a docker host.
In addition to the Provider protocol, there are now templates along with each provider. These templates describe the various cloud-init yaml files needed to set up a virtual machine on first boot. By using templates we can support quite a bit of variety in the setup and provide specific information to them via the implementing Provider.
Lastly, this rewrite also adds the ability to create new virtual machines via the vmctl create command. This command will download and create all of the files necessary for a new virtual machine.