PARTIAL: Track names on a per-statement basis
Add some debugging tooling
Track names on a per-expression basis

All tests pass! It's super-ugly, though, and I'm sure I'm missing stuff.