Wip sip23 √

My concern with this is that it's really easy to get it wrong. While I might define

```
implicit def myContext: ExecutionContext = prepareMyContext()
```

an unsuspecting user (indeed, neither the type of `ExecutionContext` nor its use implies that it can't be a statically bound value) might write:

```
  implicit val myExecutionContext: ExecutionContext = if (foo) Default else SomethingElse
```

and completely break things.