conduit: Add Data.Conduit.Resumable

Move ResumableSource implementation to Data.Conduit.Resumable,
but re-export it from Data.Conduit.

ResumableSink is inspired by the conduit-resumablesink package by
Andrew Miller.  Changes from the original:

 * Return completion as Right instead of Left.  Right is "after" left,
   and completion is "after" resumption.

   On the other hand, a resumable sink usually doesn't complete,
   and Left is normally used for error values.

 * Rename -++$$ to -+$$, for consistency with $$+-

 * Remove connectResumeSink and closeResumableSink, favoring the
   infix alternatives.

   However, keep newResumableSink, and add newResumableSource and
   newResumableConduit.  I was originally reluctant to add these, as
   they might lead to less consistency in application code (you can
   also say `src $$+ return ()`, which seems just as easy).  However,
   creating an initial ResumableSink this way is particularly
   inconvenient because of the 'Either' return value in '+$$'.

 * Use type parameter order "i m r", for consistency with Sink.
   ConduitM puts the @m@ parameter on the right (to support
   MonadTrans), while the original ResumableSink had @m@ on the left.

 * Don't export the data constructor of ResumableSink.  If conduit
   changes finalization semantics in the future, the definition
   may change.
conduit: add tests for Data.Conduit.Resumable

Test resumable source finalization, too.

The ResumableSink tests come from the conduit-resumablesink package by
Andrew Miller, with minor modifications.

I did a couple "clumsy" things in my tests:

 * Import Data.Conduit, Data.IORef, etc. unqualified.

 * Use partial do patterns instead of shouldBe.

I know this is inconsistent with the existing code, but I left it this way
for a philosophical reason: writing tests should first and foremost
be easy.  It's better to have some tests that produce ugly failure output
than it is to not have those tests at all.  If a test fails later and we
want to know what the failure output was, we can replace partial patterns
with `shouldBe` as part of the troubleshooting process.