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.
A few suggestions here. One is this requires `echo -e` which you haven't really used everywhere consistently, you can work around that by using `...=$(echo -en ...)` here instead.

These are global constants so using all uppercase might be more appropriate.

Also, ideally this shouldn't be unconditional since it can be fairly annoying if you're redirecting the output to a logfile or similar. One suggestion is to use `[[ -t 1 ]]` to test if the stdout is a terminal to set the constants. (You can also accept command-line flags and/or environment variables to force enable/disable colors if you'd like.)

When you use double quotes then backslashes should ideally be doubled, but here single quotes tend to work better.

If you use `$(echo ...)` for an assignment then avoid variable modifiers (like `readonly` or `declare -r`) since that masks the error status of the command. (In this case it's a bit moot since it's unlike that `echo` will fail but it's a good practice to adhere to.)

So putting it all together:

```shell
if [[ -t 1 ]]; then
  COLOR_RED=$(echo -en '\e[0;31m')
  COLOR_YELLOW=$(echo -en '\e[0;33m')
  COLOR_GREEN=$(echo -en '\e[0;32m')
  COLOR_NORMAL=$(echo -en '\e[0m')
else
  COLOR_RED=''
  COLOR_YELLOW=''
  COLOR_GREEN=''
  COLOR_NORMAL=''
fi
readonly COLOR_RED
readonly COLOR_YELLOW
readonly COLOR_GREEN
readonly COLOR_NORMAL
```

One more suggestion (that I haven't put here) is that maybe you'll want to use symbolic names (like "success", "error", "fail", "warning", etc.) instead of RED/YELLOW/GREEN, that way if later you pick different colors you don't need to rename the variables everywhere...

I know this gets a bit into bikeshedding but I hope you find this a bit helpful. If you prefer to address this in a later commit not to block this one just let me know and I'll merge this one as is.