Leak-fix: parser objects were getting leaked.

The parser appears to be quite careful about moving off the fragments
it parses into structures, clearing each fragment once it's found a
home; but valgrind reports some leaks, which I conjecture arise when
the paser barfs on bad input and doesn't tidy away all of the
fragments it had in the air when it hit that.  Sigurd confirms that
this is plausible.  The approach here is a bit defensive: it deletes
anything it finds in the currentfnid, giveargs and currentfncall
stacks when we fail, clearing the entries to NULL as it goes; and
asserts they are NULL when we succeed.

Clear currentfncall entry after deleting it (prevents the foregoing
from turning into a double-free) or handing it off to P.rval (which
now owns it, so the foregoing needs to not delete it).
Simplifications in verify_classes.c

Some convoluted decision-making code could be replaced by simple use
of (non-trivial) boolean expressions.  Made a few variables more local
than they were.  Commented on a Log() where ProgrammingError() might
be more apt.