Slightly fancier show procedure

Nicer names for slots, deal with #!void. Simple implementation of
compose, for use therein.
Assemble free variables properly in closure creation

Before, I was relying on free variables appearing (as the same
'variable' object) in the activation frame (`sr`). Thus, closure
creations and function definitions could effectively ignore free
variables.

However, renaming locals in let forms introduces the possibility that
a free variable in the closure creation could refer to a variable
renamed there, but not in the definition. Therefore, I collect the
values of free variables by evaluating the free expressions
(references, possibly to renamed variables), then put them on the
activation frame given to the runtime procedure.