Make multiple attempts to sanity check (GCE) and validate (ALL) cluster

This PR changed the sanity check for GCE cluster creation to make multiple attempts to deal with slow cluster birth. It also performs a more detailed check of the Docker installation (by ensuring kubernetes/pause can be found). It also adjusts validate-cluster.sh (for all providers) to make multiple attempts to validate a cluster.

Before, even when creating a modest sized cluster (say, 12 nodes), these steps failed not because there was anything wrong with the cluster but just because these steps can be slow and we don't retry.
I think this `$2` should be quoted, or are you expecting the caller to pass multiple arguments separated by space and expand them here? Seems like you want multiple arguments, in that case, may I suggest making that the last argument and using a list instead?

```shell
  local instance_name=$1; shift
  local start_script=$1; shift
  local attempt=0
  while true; do
    if ! gcloud compute instances create "${instance_name}" \
      --project "${PROJECT}" \
      --zone "${ZONE}" \
      --machine-type "${MINION_SIZE}" \
      --image-project="${IMAGE_PROJECT}" \
      --image "${IMAGE}" \
      --tags "${MINION_TAG}" \
      --network "${NETWORK}" \
      "$@" \
      --can-ip-forward \
      --metadata-from-file "${startup_script}"; then
        ...
```

Does that make sense?