Factored out code that is useful for all Handle-based communication.
I learned that fromRational . toRational is equivalent to realToFrac.
Removed the pointless MaybeStartingFrom functions.

They are pointless because the Progress type is a
monoid and so instead of Nothing one could just as
well supply mempty --- which in fact was what was
being done behind the scenes anyway.