TCO wasn't broken by recent commits.

Rather, it had always been broken, and that test failure was hidden by a
bug in GNU make.

Rework some things related to that. Inline refcounting into the module
code. Hint to LLVM that the env pointer is never null so it can get rid
of some checks. TCO isn't quite fixed yet.