To do:

* Better error reporting
* Track line numbers for error messages?  (Use Gray streams?)
* Factor out useful subroutines from the existing bib styles; the
  custom-bib system (merlin.mbs) may serve as a good datapoint.
* Improve the test suite and fix some errors found by it.

In the compiler:

* get rid of the variable *lexicals* and related hacks
* the BST reader should maybe read into a fresh package, rather than
  the current package?
* package-as-body should avoid emitting 
  (multiple-value-bind (arg1 arg2)
      (form)
    (values arg1 arg2)
* maybe name formal arguments "STRING1", "INT1", ..., depending on type?
* don't name the temporary variables occuring in while$ "ARGnn"
* propagate types when they get more specific:
  { $duplicate + } is of type (INTEGER) -> (INTEGER), not T -> (INTEGER)
* be more strict when checking the type of a popped form
* Try to compile the whole custom-bib system (merlin.mbs)?
  - custom-bib is latexdoc-conditionalized BST code
  - Options can be modeled such that every option group corresponds to
    a special variable
  - In most cases, the conditionalization fits into the BST structure,
    so simple CASE or COND constructs can be emitted
  - Problematic cases (conditionalization does not fit into the BST
    structure):  FIN.ENTRY, 
  

