added first draft of new modular lexer system
allow a current buffer if we're editing a Q-Register

this eases handling of the "*" register
lexer library: added M[lexer.checkheader] and M[lexer.checkname] for matching a pattern
against the first line of a buffer or its filename.

This simplifies the "lexer.test..." macros and allows us to
select lexers based on the #! line.
throw error when macro returns with an unterminated command

it was not possible to inherit the parser state of the last command in
a macro. However, it was possible to exit the macro when its
last command was not properly terminated.
There is no useful conscious application of this behaviour.
 * If something like an uncomplete E-Command was last in the
   macro, there was absolutely no effect. However this points
   to a macro programming error.
 * If the last command started a string parameter but did not
   terminate it, the command might be (partially) executed.
   However the State's done() method wasn't called, which means
   that some commands will not execute at all. Again there's
   no useful application of this.
When on the other hand, the last command was not terminated
by accident, this was not reported to the user.
Throw error when a macro terminates while a local q-reg is edited.

This is only a problem if the macro created the local Q-Register table
(i.e. not when called with ":M") but resulted in segfaults.
Since we do not want to save in a Q-Reg whether it is local
(and that wouldn't suffice anyway), we do it in the Q-Register table
cleanup. The corresponding QRegisterTable::clear() must be called
explicitly, since the RBTree::clear() called on destruction does not
and cannot throw errors.
If QRegisterTable::clear() has been called successfully, the default object
destructor will not do much. If it has thrown an error, the destructor
will clean up the remaining Q-Registers.
simplified attaching errors to a position in a macro

introduced Error::set_coord()
renamed ED hook register to "ED" and protect ED hook executions

SciTECO commands usually only take parameters from the stack that
they need. Without protecting the ED hook execution with brace operators,
additional arguments not consumed by the hook-dispatching command
are passed into the ED hook invocation. Also an ED hook macro could
leave additional values on the expression stack (by accident).
All of this may lead to undefined behaviour if ED hooks
are involved.
finally implemented the CLOSE and QUIT hooks

the QUIT hook is actually not that trivial and required
some architectural changes.

First, the QUIT hook execution and any error that might
occurr cannot always be attached to an existing error stack
frame. Thereforce, to give a stack frame for QUIT hooks and
to improve the readability of error traces for ED hooks in general,
a special EDHookFrame is added to every ED hook execution error.

Secondly, since QUIT hooks can themselves throw errors, we cannot
run it from an atexit() handler. Instead it's always called manually
before __successful__ program termination. An error in a QUIT hook
will result in a failure return code nevertheless.

Thirdly, errors in QUIT hooks should not prevent program termination
(in interactive mode), therefore they are only invoked from main()
and always in batch mode. I.e. if the interactive mode is terminated
(EX$$), SciTECO will switch back to batch mode and run the QUIT
hook there. This is also symmetric to program startup, which is
always in batch mode.

This means that Interface::event_loop() no longer runs indefinitely.
If it returns, this signals that the interface shut down and
batch mode may be restored by SciTECO.
updated documentation on ED (buffer editing) hooks
fixed document parameters when editing local q-registers (must_undo)
added globbing command EN

 * implements the same globbing as the EB command already did
 * uses Globber helper class that behaves more like UNIX glob().
   glib only has a glob-style pattern matcher.
 * The Globber class may be extended later to provide more
   UNIX-like globbing.
 * lexer.tes has been updated to make use of globbing.
   Now, lexers can be automatically loaded and registered at
   startup. To install a new lexer, it's sufficient to copy
   a file to the lexers/ directory.
added EJ command: return runtime properties

 * main motivation is to have a way of getting the number of buffers
   in the ring. "EJ" or "1EJ" will do that.
   This simplifies macros that will have to iterate all the buffers.
   They no longer have to close the existing buffers to do that.
 * "0EJ" will get the current user interface. This is useful to select
   a different color scheme in the startup profile depending on the UI,
   for instance.
added a buffer session module (session.tes)

This is a simple and straight-forward implementation of
buffer sessions in SciTECO. A session is merely a SciTECO script
that opens files when executed (and restores properties).
The current session is identified by this script's filename in
Q-Register "session.path": ~/.teco_session by default.
Users may set "session.path" to manage different profiles.
An abstraction of session "names" is not provided. Users are expected
to hack these on their own.

For the common task of having one session per profile, the
"session.git" macro is provided. It set's up the current session
relative to the current Git repository.
This will create ".teco_session" files in the root of Git
repositories, that may be added to a global ignore pattern (or they
may even be versioned!)
removed SciTECO-specific ignores from .gitignore

these should be put by the user in his/her global or repository-specific
ignore patterns
allow setting the "*" register as an alternative to nEB

this is more consistent with SciTECO's idea of abstract registers
and allows the currend buffer to be saved on the Q-Register stack.
This allows the idiom: [* ! ...change current buffer... ! ]*
added variant of the ^U command with string building: the EU command

it became apparent, that something like this is very useful,
when constructing the contents of a q-register without
editing it.
I have decided against introducing another modifier for toggling
string building. Most commands have string building enabled and it
doesn't hurt. For the few exceptions, an alternative variant can
be introduced.
added EI as non-string-building variant of I

this is analoguous to EU as the string-build equivalent
of ^U.
updated lexer and session libraries using new EU, [* and ]* commands
updated Doxygen configuration: doxygen -u Doxyfile.in
factored out file loading and saving into the View specialisation IOView

this will allow us to use the same algorithms for loading and saving
Q-Registers (from/to file).
 * Saving with EW when a Q-Reg is edited has been fixed (was broken earlier)
 * SciTECO save point files are now named .teco-X-BASENAME
   When using IOView for Q-Regs, there will be no way to sensible count
   the save points. Each write of a Q-Reg may be to another file.
   Therefore, we number save-points globally.
   If the sequence of writes has to be reconstructed manually,
   one can still look at the save point files' modification dates
 * give more informative error messages when saving a file fails