code: function merge(config, extension, separator, whitelist) {
      whitelist = whitelist || [];
      separator = separator || ":";
  
      Object
          .keys(extension)
          .filter(function (key) {
              return !whitelist.length || whitelist.indexOf(key) !== -1;
          })
          .forEach(function (key) {
              applyKey(config, key.split(separator), extension[key]);
          });
  
      return config;
  }
docs: Merge <config> with <extension> split by <separator> exclude <whitelist>.
  
  @param {Object} config
  @param {Object} extension
  @param {string} [separator=":"]
  @param {Array} [whitelist=[]]
  @returns {Object}