Creates a CoroutineScope that wraps the given coroutine context.

If the given context does not contain a Job element, then a default Job() is created. This way, failure of any child coroutine in this scope or cancellation of the scope itself cancels all the scope's children, just like inside coroutineScope block.