STCLang: State Thread Composition as a Foundation for Monadic Dataflow Parallelism