Wip sip23 √

So `save` saves context at the call site and provides a `Runnable => ()` which will execute the `Runnable` with that context?

Here's fairly a typical bit of code that uses futures. Can you illustrate how `save` would be used?

The lines of the for comprehension call `Future.apply`, `Future.flatMap` and `Future.map`, so each needs an implicit EC. The `Future.flatMap` and `Future.map` calls will happen on a different thread to the original call to `myAsyncFunc`, so capturing `myAsyncFunc`'s context needs to happen before then.

```scala
def myAsyncFunc(f: Int => Int)(implicit ec: ExecutionContext): Future[Int] {
  for {
    a <- Future(factorial(12))
    b <- a / 2
    c <- f(b)
  } yield c
}
```