[corlib] Fix LogicalCallContext to behave correct when the underlaying thread changes.

These changes should ensure that the LogicalCallContext changes on new Tasks and Threadpool work-items.
The test (https://gist.github.com/matthid/d9d50b309b8a037b264e) shows that this is currently not working on the mono runtime.

Note that this is incredibly usefull if you want to do something like [ThreadStatic] but not for multiple thread but for multiple asynchronous operations (This is hard/impossible to do in user code).