Bring Azure deploy scripts up to date

Commit 9934a0ace4a2a35463bf9c933eab9ab2b71a139a has changes that affect the global salt configs. 

Everything else is Azure specific.

Fixes #1731 #1485 
I see some possible simplifications:
* Use a `while :` to loop forever and `break` out of the loop when the conditions happen.
* Don't use `set +e`, it's bad form, instead use `||` to check for a non-zero return.
* Move the `3>&1` redirect out of the loop, that obviates the need for `{ ...; }`. Also, There should be no `-` at the end of `1>&3` as far as I can tell. (Am I wrong about it?)
* Also, ideally, params should be an array variable.
* And variables should be local.

Here's my take on it:

```shell
azure_call() {
  local -a params=()
  local param
  # the '... in "$@"' is implicit on a for, so doesn't need to be stated.
  for param; do
    params+=("${param}")
  done
  local rc=0
  local stderr
  while :; do
    # no need to call this with 'bash -c' I'd say...
    stderr=$(azure "${params[@]}" 2>&1 >&3) || {
      # I assume stderr needs to be exactly that string.
      # If that's not the case, then something like
      # [[ ... == *"getaddrinfo ENOTFOUND"* ]] would do a partial match.
      if [[ "${stderr}" == "getaddrinfo ENOTFOUND" ]]; then
        rc=$?
        break
      fi
    }
  done 3>&1
  if [[ "${rc}" -ne 0 ]]; then
    echo "${stderr}" >&2
    return "${rc}"
  fi
}
```

One more problem is that this might end up looping forever, maybe it would be good to add a maximum count of retries, in which case that can be made the condition of the loop instead of just `:`.

My code is untested, not sure it even works, but I guess you can get the idea from it...

Cheers,
Filipe