Tries to resolve environment variables in the given value in case it is of type "string", else the given value is returned.
Environment variable references look like: '${env.MY_ENVIRONMENT_VARIABLE}', optionally one can configure a fallback
if the referenced env variable is not present. E.g. '${env.NOT_SET:http://localhost:8080}' yields 'http://localhost:8080'.

@param value
@returns {*}
function resolveValue (value) {
    if (typeof value !== 'string') {
      return value;
    }

    // "${env.MY_ENVIRONMENT_VARIABLE:http://localhost:8080}".replace(/\$\{env\.([^:]*):?(.*)?\}/,"$1--split--$2").split("--split--")
    let regex = /\$\{env\.([^:]*):?(.*)?\}/;

    // is this an environment variable reference with potential fallback?
    if (!regex.test(value)) {
      return value;
    }

    let tokens = value.replace(regex, '$1--split--$2').split('--split--');
    let envVar = tokens[0];
    let envVal = process.env[envVar];
    let fallbackVal = tokens[1];

    return envVal || fallbackVal;
  }