Fixed CoroutineScope of withContext block for structured concurrency

* Both withContext and coroutineScope are optimized and are rewritten
  as extensions of AbstractCoroutine
* This gives withContext consistent exception handling &
  suppression logic from JobSupport
* Support for cancelling state is dropped from AbstractContinuation
  and it is now faster, too
  (it can be merged with CancellableContinuationImpl in the future)

Fixes #553
Fixes #617
diff --git a/common/kotlinx-coroutines-core-common/src/CoroutineScope.kt b/common/kotlinx-coroutines-core-common/src/CoroutineScope.kt
index 51e7371..59121f4 100644
--- a/common/kotlinx-coroutines-core-common/src/CoroutineScope.kt
+++ b/common/kotlinx-coroutines-core-common/src/CoroutineScope.kt
@@ -16,7 +16,8 @@
  *
  * Every coroutine builder (like [launch][CoroutineScope.launch], [async][CoroutineScope.async], etc)
  * and every scoping function (like [coroutineScope], [withContext], etc) provides _its own_ scope
- * into the inner block of code it runs. By convention, they all wait for all the coroutines inside
+ * with its own [Job] instance into the inner block of code it runs.
+ * By convention, they all wait for all the coroutines inside
  * their block to complete before completing themselves, thus enforcing the
  * discipline of **structured concurrency**.
  *