* Fix pretty-print to handle shared/cyclic data.
* Fix pretty-print to print records properly.

CHECK * Recognize calls to call-with-values where the second argument is a
  case-lambda and handle them sensibly.

* Guardians:
CHECK  - Implement guardians. 
CHECK  - clean up after file ports are dead by flushing/closing the
         underlying file handle.
  - Flush and close output-port on exit.

* Interrupts:
CHECK  - pcb should have an engine-counter field that's decremented on
    every procedure call.
CHECK  - a do-event procedure must be called when the counter goes
    negative.  It should capture the current continuation and
    reschedule the process.
CHECK  - figure out what to do when a process gets interrupted while
    reading from a file.
CHECK  - Implement [CTRL-C] keyboard interruption with the ability to
    resume the computation, reset to the repl, or terminate the
    program (at least for now).

* FFI: 
  - provide a general mechanism for calling foreign procedures
    without having to extend the VM.
    (foreign-call void: FOO int32: x char*: y ptr: z)
  - may dump the bignum stuff in the VM and move it to scheme.

CHECK * Read-invariant gensym.