smarter execution flow

@williamboxhall The current execution flow is too limited, it is capable to batch requests only for simple scenarios. This change introduces a smarter execution flow that allows to batch requests even in deep nested ```flatMap``` compositions.
Interesting, I tried to reproduce the case I was debugging in an application using Clump. I'll revisit the tests then.