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)?

