title: CoroutineScope lifecycle issue
body: <p>Currently I am leaking coroutines created by <code>GlobalScope.launch()</code> the <code>Job</code> of which is not being cancelled in some circumstances. I was wondering if I created a <code>CoroutineScope()</code> instead in my function and whether or not the scope in which a CoroutineScope() is created, once garbage collected, cancels the job associated with my custom scope?</p>
  <p>e.g.</p>
  <pre><code>class MyActivity: Activity {
  
      fun myCustomCoroutineScopeScope() {
         job = CoroutineScope.launch {
             endlessFunctionCall()
         }
      }
  
      suspend fun endlessFunctionCall() {
          while (isActive) {
           // perform work
          }
      }
  
      // sometimes not invoked when application terminates
      fun cleanup() {
          job.cancel()
      }
  }
  </code></pre>