Modify kube-push for GCE to bring down the existing master VM and completely replace it with a new one

This makes upgrades less likely to break in weird ways and adds support for easily upgrading underlying components on the master like the guest OS or etcd.

To do this, we reserve the IP address of the master after it's created and store all dynamically created files on a persistent disk (PD). Then, kube-push consists of swapping the PD and reserved IP address over to a new VM with the desired components on it.

This has been tested to pass the /validate endpoint after upgrading between a few different recent commit versions.
It's not, and frankly I don't have any good plan for getting that assumption under test, given that usage of the filesystem is spread all over the place in tons of different shell scripts and salt configs :/

Have any ideas?