NExT: Teaching Large Language Models to Reason about Code Execution