use a "FutureLocal" context to enable the usage of ClumpSources as singletons

The ```ClumpContext``` is basically an indirection that allows to remove the mutable state from the ```ClumpSource```, so we can use it as a singleton. The context is maintained by a "FutureLocal", that is created for each new future composition chain.