function mergeConfigs(first, second) {
  return _.mergeWith(
      first,
      second,
      (firstValue, secondValue) => {
        // Merge arrays by concatenation.
        if (Array.isArray(firstValue)) {
          return firstValue.concat(secondValue);
        }
        // Use lodash's default merge behavior for everything else.
        return undefined;
      });
}
Like Object.assign, but recursive and doesn't clobber objects and arrays.
If two arrays are merged, they are concatenated.
Ex:
  mergeConfigs({ foo: 'bar', args: [1, 2, 3] },
               { baz: 'blah', args: [4, 5, 6] })
      => { foo: 'bar', baz: 'blah', args: [1, 2, 3, 4, 5, 6] }

@param {Object} first
@param {Object} second
@return {Object}