Modified the type hierarchy to place coroutines inside tasks

Task now holds a coroutine, instead of a coroutine holding a task.