function flatSpread(func, start) {
  return function() {
    var length = arguments.length,
        lastIndex = length - 1,
        args = Array(length);

    while (length--) {
      args[length] = arguments[length];
    }
    var array = args[start],
        otherArgs = args.slice(0, start);

    if (array) {
      push.apply(otherArgs, array);
    }
    if (start != lastIndex) {
      push.apply(otherArgs, args.slice(start + 1));
    }
    return func.apply(this, otherArgs);
  };
}
A specialized version of `_.spread` which flattens the spread array into
the arguments of the invoked `func`.

@private
@param {Function} func The function to spread arguments over.
@param {number} start The start position of the spread.
@returns {Function} Returns the new function.