Add function STARTSWITH to Util
Add support for (LIST ...)

LIST takes variable arguments and constructs a list.  It is a more
convenient way of writing

  (CONS A (CONS B (CONS C ... (CONS Z (QUOTE NIL)) ... )))

Instead, we can now write:

  (LIST A B C ... Z)

Since the whole list is not quoted, as in:

  (QUOTE (A B C ... Z))

A through Z may be expressions themselves, not just numbers and symbols.
Add parser combinators
Add calculator to exercise parser combinators
Add support for nested S-exprs to calc
Add support for comparisons to simple calc
Add pseudo-instruction for reserved opcodes
Add instructions for DELAY/FORCE

Add the LDE, AP0, and UPD instructions from Chapter 8 of
Henderson (1980) -- with the following alterations:  we will not
distinguish between an unevaluated receipe and an evaluated recipe.
A recipe is always unevaluated.  An "evaluated recipe" is just a
value.  The implications of this are:

  - AP0 doesn't necessarily expect a recipe on the top of the stack.  If
    the item on the top of the stack is not a recipe, AP0 acts like NOP.
    If it is a recipe, it behaves as described in the book.
  - UPD replaces (recipe:(c.e)) with the result of the evaluation, not
    with an "evaluated recipe" that refers to the result of the
    evaluation.
Add support for DELAY/FORCE to LispKit
Print recipes as '?'
Add RCP instruction for isrecipe predicate
Add RECIPE predicate to lisp compiler