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
No forward variable declarations please