I fixed the (S (C x) I) case in "fuse".  This has always been a thorny case to
get right, because it returns x, which is a child of (C x), which is dropped.
So the sequencing of hold and drop is crucial.  It even ended up affecting the
parse_lambda function (the "no definition" case).

I think I may now have it provably correct, but I'll keep reviewing the logic
over the subsequent weeks, while working on other parts of the code.