Better failure handling

** incomplete - do not merge, just requesting comments **

This (in-progress) change attempts to encapsulate all possible failures in a Marquise operation and provide opportunities to recover. Changes:

  1. Converting all exceptions to ``Error``s so they can be caught even inside a pipe. This means we can simulate handling timeouts in the middle of a stream (e.g. for testing).

@fractalcat @christian-marie 
This is to match ``consistentEnumerateOrigin`` in master (which just stops streaming). Now we have a ``enumerateOriginResume``, etc. that returns a resumption pipe, I dunno if it's useful to have a version that automatically retries forever?