Fix the function argument arity to be in line with ES6.

In ES6, a function's arity (i.e. 'length' property) is the number of
formal parameters before the first formal parameter with a default
value (i.e. an initializer), not including the rest parameter. This
changes the code emitted for function signatures to omit any parameters
from the first with an initializer onward, instead making them local
variables that get their value from the arguments object.

See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-functioninitialize.