parser: collect_var_sig now returns the sig collected, instead of stacking it.
parser: collect_var_sig now returns the sig collected, instead of stacking it.

Parser's sig stack was made so that method collection could store the signatures
inside and not have to realloc as much. However, it was quickly abused so that
everything shoved sigs in it, and then it had to be checked and also dropped by
callers.

Now, only call arg collection uses it (so only methods and functions), and they
drain it after use. This means no more chance of the sig stack 'leaking' and being
larger than it should be.

This also makes collect_var_sig simpler to use, since it returns a value like it
should have all along.

Also got rid of the helpers it had, merging them back into one big core, except for
the collection of callable arguments. That was big enough that it was shoved into
another function.

Externally, no changes. Internally, a tiny bit of simplification.

FascinatedBox/lily,FascinatedBox/lily,jesserayadkins/lily,jesserayadkins/lily,FascinatedBox/lily,jesserayadkins/lily,FascinatedBox/lily