Some main loop fixes



This is a heads-up on some fixes I made to the Maxima main loop. Having
discussed them with Jim, I'm about to commit the changes.

One change eliminates spurious error messages by making sure that the input
buffer is emptied after an error occurs. So for instance, sqrt(,x); now
produces only one error message, instead of several.

The other set of changes is designed to fix the "extra line break" problem:
an extra blank line, printed after most output unnecessarily. The hack
consists of the removal of some unnecessary newlines, and a simple heuristic
to determine if we're on an interactive terminal (in which case, when the
user hits ENTER, we're on a new line already) as opposed to, say, an xmaxima
session.

I have tested these changes with GCL, CLISP, and CMUCL, using both maxima
and xmaxima. I understand that Jim also tested them with SBCL. That said,
the logic may possibly break with other LISPs. Furthermore, I'm sure that
there will be problems with front-ends, making further tweaks necessary.
(Hopefully, tweaks will be all that's needed, and it won't be necessary to
roll back these changes.)

For the record, the files changed are displa.lisp, macsys.lisp, mload.lisp,
and nparse.lisp.


Viktor