'spawn' stmt implementation and some fixups.

- Support for spawn statements.

- Fix for STMTBLOCK code gen: don't generate the body twice! We had been
  using the pre-hook manual-visitor-invocation strategy similarly to
  if/while-statement support, but the expr hook is a post-hook so this
  doesn't work. Now we just let normal visit gen the code first, then
  take its return value in the post-hook. There's no real need for
  manual control or visitor-pass isolation (and in fact a labeled
  break/continue inside a statement-block-expression might be useful)
  and this approach seems a bit cleaner overall.

- Better type-inference error messages: only show one conflicted node's
  error out of a connected component in the inference graph (usually all
  nodes converge to the same CONFLICT value), and alter the meet
  function so that when two CONFLICT values meet, only the first one's
  error is preserved (again, usually keeping both results in
  duplication).

- Some more detail in AST printing to assist in debugging.

- while-statement that wraps an inlined function body needs a condition!
  It should be a constant '1' (there's a break at the foot of the
  loop/function body in any case so we only execute once).