Default values for optional and tuple arguments

This allows default values to be specified in function/procedure
declarations, instead of relying on ugly hacks with 'specified'
and intermediate variables. The VM side implementation is in the
exception path of the respective argument access instructions, so
there is no main path performance impact, and the "get default"
path is quite simple and fast.

Defaults for tuple arguments must cover the full tuple. This is
an arbitrary compiler rule that seemed reasonable. It can simply
be removed if desired, though that's probably not of much use
until we can skip arguments in calls. (See #19.)

Note that 'specified', 'tuples' and 'sizeof' are unaffected by
this feature! Default values are only considered when actually
attempting to read an argument that isn't physically present in
the argument array passed to the function/procedure.

VM instructions affected by this are GETARGI, PHARGI, PHARGI2,
GETTARGI, GETUVARGI and GETUVTARGI.

GETTARG, SETTARG and SETUVTARGI. (These should be updated and
reactivated after adding peephole optimizations that can issue
them!)

There were also a few bug fixes;

GETUVTARGI now checks indexes against the function that actually
received the arguments; that is, the one that the upvalue
callframe belongs to.

Fixed ancient bug in eel_m_read(): eel_m_read() would look at the
wrong function when adjusting the index for required arguments
when issuing a GETUVARGI instruction.

	Problem avoided by moving the adjustment into
	declare_func_args().

	Fixed corresponding upvalue optarg index bug in
	eel_m_write().

	SPEC instruction fixed (simplified) accordingly.

Closes #17.