Using a Proof Assistant to Teach Programming Language Foundations, or, Lambda, the Ultimate TA