add otter.util.retry.should_retry_effect

This is just a little helper function for gluing some of otter.util.retry to effect.retry -- specifically the ability to call the "can_retry" functions, and the interval-with-delay.

This makes use of a new intent I added to the Effect library, "Delay", which allows effectful code to "sleep" without needing to parameterize the clock.

This branch depends on the pure-http-refinements branch for no good reason other than that branch updates the effect dependency to 0.1a7 which this branch also depends on, and I didn't want to cause a conflict. So to see JUST the changes from the branch, click here: https://github.com/rackerlabs/otter/compare/pure-http-refinements...retry-effects
I think it would be nicer if the exception tuple was destructured first:

```python
exc_type, exc_value, exc_traceback = e
if can_retry(Failure(exc_value, exc_type, exc_traceback)):
    # ...
```

Exception tuple structure isn't super exotic, but I think it's far enough in most Python programmer's distant memory that it's better not to force that mental strain upon the casual passer-by ;)

To my surprise, `t.p.f.Failure` has no `fromExceptionTuple` class method. I'm assuming we're okay with only allowing reasonable, modern, well-behaved things, and not all of the [gnarly deprecated stuff `t.p.f.Failure` has to deal with](https://twistedmatrix.com/trac/browser/tags/releases/twisted-14.0.2/twisted/python/failure.py#L208).