Fix coroutine bug for solid invocation
Summary: Previously, if someone tried to await from an invocation of async solid, and had a type on their outputs, we would fail. This fixes to wrap the resulting coroutine and type check properly, and also cleans up a bit of code along the way.
Test Plan: added unit test for coroutine case.
Reviewers: alangenfeld, sandyryza
Reviewed By: alangenfeld
Differential Revision: https://dagster.phacility.com/D8861