The IsStream type class contains MonadAsync type in the consM method.
This refactor allows lifting MonadAsync, therefore, dependency on
monad-control out of the low level modules.
This commit has no functionality changes whatsoever. It is a pure
reorganization of existing code. Not a single line in any function
should have changed.
* Push down all functions from IsStream.hs to a common module below
* Each submodule is now complete in itself i.e. exports all functions
that belong to that module.
* A few functions had to be moved around to classify them in the right
modules. Each submodule has a crisp definition.
* Further break down "Transform" module to create Nesting/Lift modules
under IsStream
* Create "Lift" module under StreamD as well, both IsStream and StreamD
have the same structure now.
* Rearrange exports to properly organize them in clearly defined
categories.
* Rearrange functions to reflect the export order or to bring them close
to other similar functions.