Introduce ServerSpan interface and implementation. We need to keep track of more than just the Span information, for example Sample indication. This object bundles that Server Span information we need to keep track of.

If we bind span to new thread we not only need to keep track of raw
span info (trace id, span id, parent span id,…) but also of indication
if we need to sample or not in case new thread executes a new service
request. This fixes this.
Introduce BraveCallable, BraveRunnable and BraveExecutorService. Using these makes it easier to do multi threading in your service and keep tracing working.