Extend runtime a bit, and fix some errors in ast-split and desugar

- Letrec used the wrong environment for right-hand-sides, so
  things could be marked as regular identifiers when they were letrec'd

- Functions that are mutually recursive with data now participate in the
  letrec if they are right outside the data

- Free variables need to be calculated relative to the pre-transformation body,
  since calculating freevars relative to a post-transform body needs the
  helpers as well to figure it out