Fix rot
Different way of building scopes; implement [|X Y| subx capture]

- Parser produces scopes as ordinary tree nodes, they are not stitched
  on after the fact.  Parent linking and empty scope elision take
  place in a post-processing pass.

- Paremetrized sub-expression capture implemented.
Move two complex test cases to the end of test suite script
Drop unused file test.cc
Cleanup
Drop a TODO item

- As described in README, this is not allowed.

  One approach considered was to create a new scope for the closure
  and copy values inside.  But that wouldn't solve anything.  There's
  no point in copying in values that are already set, as those
  wouldn't change anyway.  And there's no point copying in unset
  values, as those are unset.

  So just saying "referencing unbound names is forbidden" achieves
  exactly the same effect.  A possible improvement is providing a
  compile-time diagnostic, as this can be statically determined.