Add a gatherFrom convenience function

`gatherFrom` gathers output values asynchronously from an action in the base monad and then yield them downstream.  This provides a means of working around the restriction that 'ConduitM' cannot be an instance of 'MonadBaseControl' in order to, for example, yield values from within a Haskell callback function called from a C library.

Pinging @snoyberg