Move widget code to its own file for tidiness
Separate the session's transcript from its environment

Formerly the history was treated as the environment; however, we want
to distinguish between the global state of the interpreter, and the
inputs and outputs. The history ($* variables) are now dealt with as a
mechanism of the session, outside the interpreter.

NB the (de)serialisastion of global values is still a little crude,
and only deals with primitive values so far (i.e., not lazies and not
function values).
Basic ability to re-evaluate expressions

This is fairly simple for the server; it just evaluates and rebinds
the variable if supplied. In the UI it required more widgetising of
the input prompt.
Make target to clean up old sessions
Fix tests

Mike B is a very naughty boy.
Try/catch test case
Test that exceptions propogate from lazies correctly
Use a mutable context object instead of cont, econt

Previously, we have a lots of references to cont and econt, even
though econt is usually pass through unchanged.  This is already
cumbersome, and extending this approach directly to support return
statements would be intolerable.

So instead of adding another continuation to the argument list of each
procedure, we thought it would be better to bite the bullet and have a
context object that holds the continuations, and makes explicit the
stack-like way that the continuations are used.
Add an abort handler stack, and implement 'return'

Aborts are used for any deviations from the normal continuation flow.
There are used here to implement exceptions and returns, and could be
used in the future to implement 'break' and 'catch' without adding
further stacks.