2683 - new exposition
2684 - sketch: a browseable interface for logs

The challenge is balancing independent log statements with nesting
for easier expand/collapse.
2685 - independent log stmts can still seem nested
2686 - expand just one level at a time

But be careful of javascript operations that need to traverse the entire
file. We want to encourage logs to grow huge.

One way to eliminate the initial 'onload' overhead is to explicitly
encode display state and onclick handlers in each line. But that'll blow
up file size.. Let's revisit this when we get to a large logfile.
2687
2688 - simple logger helper
2689 - first draft for logging eval
2690 - undo 2689
2691 - rip out debug logging
2692 - simpler logging for eval

Replaces the extra parameter all over the place with an extra
name and a global. Seems like a reasonable tradeoff.
(Ignore multi-threading entirely for now.)
2693 - reorg and some extra detail
2694
2695 - logging UX tweaks
2696
2697 - structured metadata using :()
2698
2699

Avoiding the call to newSym in every single eval saves us 13%.
2700 - store metadata on functions

Unclear if this is enough. Do we want to handle multiple lists of
metadata? Metadata later in the body? The latter especially
might be necessary for supporting metadata through generics.