Emit at most one .concat call per argument/element list.

Since Array.prototype.concat can take multiple arguments, we don't need to
build a chain of single-argument .concat calls.

For cases where the only arguments/element is a spread element, like
f(...args), [...elems], or new F(...args), we actually don't even need to
call .concat at all (though the chaining approach was handling that case
appropriately before).
Merge pull request #1 from benjamn/compact-concat-calls

Emit at most one .concat call per argument/element list.