Avoid leaking "arguments" in utils.intercept.

Also avoids a few array manipulation by speeding up the most common cases (less than 10 arguments).
These changes improve performance considerably in certain cases.
Included test case has 100% branch coverage

Fixes #948
Wish there were some way to avoid the .concat ... I wonder how many consumers of this intercept functionality actually use the _super and args arguments. Worth investigating I think.