Let var hygiene

This is a rebase of my approved pull request from ... the end of June? It introduces hygiene for let-bound variables.