Make kube-down more robust for GCE provider

This PR makes `kube-down.sh` more robust for the GCE provider. Before, the deletion of resources did not always succeed and running kube-down a second time would not always clean up remaining resources. This PR changes kube-down to find out what the running resources (instances, firewall rules, routes) are and then attempts to delete them. Occasionally, something may go wrong:
```
Deleting firewall rules kubernetes-minion-1-all kubernetes-minion-2-all kubernetes-minion-3-all kubernetes-minion-4-all
ERROR: (gcloud.compute.firewall-rules.delete) Some requests did not succeed:
 - Backend Error
```
in which case `kube-down.sh` can be run again.

For taking down very large clusters this is very useful to avoid a lot of manual deletion (or writing custom scripts).

Another change I made was to give the gcloud commands a list of instances etc. are arguments rather than use a loop and run a separate gcloud command per resource. These commands are run in the foreground so the final wait has been removed. We may need to revisit this decision for large clusters.

@jbeda @cjcullen 
2 things here:
* I don't think you need to do this in 2 commands.  You can do `local -a "minions=($(gcloud compute instances list...)`
* Don't use backticks -- use `$(...)` instead.