Vagrant env

This PR adds support for a Vagrant managed cluster running a single master with N minions.  The PR reuses the existing Salt States to configure the master and minion boxes.  Each box is running Fedora, so the Salt States were modified where appropriate when running on a Red Hat based OS family to use systemd to manage the installed services.  Support via Vagrant for other Linux distros is easily added by modifying the Vagrantfile and registering new base boxes.

The initial vagrant up takes some time as it installs Salt, and downloads golang, etc.

Subsequent vagrant provision commands to update code after source changes across the cluster are very fast.  The provision scripts are incremental.  Each minion upon successful initial provision calls the master to configure it.  As a result, it can take a moment ( < 1 min) after initial vagrant up for the minions to fully stabilize.  Subsequent edits, and vagrant provision commands have no delay.

Original issue: https://github.com/GoogleCloudPlatform/kubernetes/issues/187

This was tested in the following configuration:

os: Fedora 20
vagrant: 1.6.2
virtual box: 4.3.12

Both single master, single minion and master + 3 minion configurations were tested.
This is really minor and just to make it more ruby idiomatic :D, I would change this block to something like:
```
  # Kubernetes minion
  num_minion.times do |n|
    config.vm.define "minion-#{n+1}" do |minion|
      minion_index = n + 1
      minion_ip = minion_ips[n]
      minion.vm.box = kube_box[kube_os]["name"]
      minion.vm.box_url = kube_box[kube_os]["box_url"]
      minion.vm.provision "shell", inline: "/vagrant/cluster/provisioners/provision-minion.sh #{master_ip} #{num_minion} #{minion_ips_str} #{minion_ip}"
      minion.vm.network "private_network", ip: "#{minion_ip}"
      minion.vm.hostname = "kubernetes-minion-#{minion_index}"
    end
  end
```

Also, you won't need to clone the array.

I tested this on my local, seems to be working.