mydiff: Fix early termination problems

Apparently diff can return 2 to indicate "trouble" even in pretty
mundane situations.  Previously, we took this as a signal that we
should abort immediately, and failed to clean up the less child when
we aborted, leaving the terminal in a screwy state.  Fix this by not
aborting unless diff is killed by a signal, and if we do abort, take
down the less child before exiting.