To support composition of coroutines, serialization of the coroutine context must be shared across all coroutines sharing the same scope.
To achieve this, we need the coroutine.Context type to implement types.Serializable and types.Deserializable; this will allow serialization of coroutines found in the scope of other coroutines within a single state.