Support tuple arguments in combination with optional arguments

It's now allowed to specify any combination of required, optional
and tuple arguments, as long as they're specified in that order.

Minor refactoring and cleanup.

Added test cases to varargs.eel and argdefault.eel.

Closes #26.