libcdecl: Fix memory leak when parsing e.g., int () int.
After the parser reduces the start symbol, it can still fail if the
scanner returns additional tokens. In this case, nobody frees the
parse tree that was already output by the previously-executed parser
actions.
Solve this by simply freeing the output tree in the caller on error.
We make a slight adjustment to the "interactive" test case so that it
will tickle this particular issue. When using "leak sanitizer", the
leak will be found and a nonzero exit status will be substituted,
failing the test.
The existing "command error messages" test also notices the problem when
using "leak sanitizer", but not because of the exit status: it only sees
text printed to stderr in the wrong format.