Wip sip23 √

@mariusaeriksen 

>but that is not the point of capture -- the point of capture is to save context at the site of suspension, not execute

Could you define that so that a user of ExecutionContext knows what to do? And we still need to address the testability and fragility of "if prepare is not called things break, but nobody knows when to call it or how many times".

This is the (sad) ScalaDoc for `prepare`:
**"Prepares for the execution of a task. Returns the prepared execution context. A valid implementation of prepare is one that simply returns this."**

May I propose that we completely disregard `prepare` and `capture` for now, and instead focus on finding the optimal solution to the problem (taking into consideration performance, usability and reliability).