Lose the need to pass args to base() and self()

It bothers me to explicitly pass the `arguments` variable of the calling function to `base()` and `self()`; we don’t need the arguments of the caller to get the caller.

We can use Function.prototype.caller (as functionName.caller or arguments.callee.caller) internally instead. It is non-standard but works everywhere. There might be some confusion with arguments.caller, which is deprecated and does not work everywhere.

This change is completely backwards-compatible.

Unit tests attached.