Use cleaner NamedTuple syntax for InputContext and OutputContext
This diff switches to using the cleaner NamedTuple syntax for InputContext and OutputContext.
Two weird things:
log_manager -> log as argument to new. This is technically a breaking change for those who might be directly initting these contexts (should not affect those who are mocking them).
A bunch of casts in places where they weren't necessary before. I'm not sure why these weren't previously caught, because nothing should have changed about the optionalality of the arguments.
Test Plan: Mypy and unit
Reviewers: alangenfeld, sandyryza
Reviewed By: alangenfeld
Differential Revision: https://dagster.phacility.com/D7459