Make `Output` an associated type
Make `Output` an associated type

For `Coroutine` and `CoResult`, `Output` should be an associated type
(i.e. an output type) such that one type can only implement a single kind of
Coroutine.

Victor-Savu/o3