This enhancement intends to refine PropagationContextElement by:
- Capturing the ThreadLocal when instantiating the PropagationContextElement in order to support dispatchers switching threads
- Removing the constructor parameter which is not idiomatic and breaks the support when switching threads, and use instead the updateThreadContext(context: CoroutineContext) parameter
- Making the kotlinx-coroutines-reactor dependency optional
- Making the properties private
- Documentation the recommended usage as Dispatchers.IO + PropagationContextElement()
cc @bclozel