initial commit - a toy ast-only tower
expand hierarchy to include handlers, channels
implement handler monad
check in all handler stuff
start adding a toy object language to make codegen easier to sketch out

- i wanted a language without any types in the surface syntax to make it
  easier to manipulate.
- eventaully this will be swapped out with Ivory once i'm satisified
put codegen monad underneath Tower, tied the knot
manually namespace writer functions, start lifting PutModule into place
implemented ast queries properly
freshname makes it feel more like home
remove dead code, reorganize surface syntax
weaving more code generation through.

- monitors generate a useless module
- handlers don't generate anything yet because i need to tie them
  to some HandlerContext (which pretty much comes down to Thread)
  that I haven't figured out yet
infastructure to generate code per thread
change handler code to generate moduledefs per thread.

now my unknowns are all moved to actually using the handlercode
abstraction to generate messaging code...
graph creation functionality, extend tests, graphviz functionality
graph now includes thread message sources

- this will make it possible to query the graph directly at handler codegen
implement generateHandlerCode
modifications to handler/monitor codegen, support monitor state
test code uses monitor state
worked on handler codegen quite a bit

- currently, the only way we get away with per-thread emitters is
  by keeping the (identical, per syntax-level emitter) names local
  to the per-thread module, permitting multiple implementations.
- there's gotta be a way to thread the code generation through better
  so that the syntax-level `Emitter a` has a name unique to the thread
  scope.
tests - add a multithreaded test with less complexity