tests: excise unittest2 dependency

Given that pytest is already pretty much here to stay without
significant work, write these tests to use pytest's functionality to
be able to avoid unittest/unittest2.

Unfortunately this seems to require a change of behavior in how the
cause of the skip will be reported.

Signed-off-by: Daniel Farina <daniel@heroku.com>
s3_worker: don't capture all exceptions

Problematic exceptions that can be caught by this except: include
KeyboardInterrupt.  It seems like this wouldn't matter much, but in
general 'except:' without re-raising is probably not good form.

Signed-off-by: Daniel Farina <daniel@heroku.com>
log_help: ignore syslog connection problems

Signed-off-by: Daniel Farina <daniel@heroku.com>
retries: pull out retry helpers from wal_e.s3_worker

These are useful in their own right (even though the abstraction
itself is kind of lousy, and the code convoluted), having little to do
with S3 work in particular.

Signed-off-by: Daniel Farina <daniel@heroku.com>
retries: avoid accidental livelocks

Putting in an extra yield doesn't seem like it could hurt, but the
alternative sure could.

This was a defect of the pre-refactored version, too.

Signed-off-by: Daniel Farina <daniel@heroku.com>
retries: do not ignore KeyboardInterrupt

Unlike other exceptions, this one is triggered by the user -- don't
ignore it.

Signed-off-by: Daniel Farina <daniel@heroku.com>
s3: multi-delete optimization

Introduce asynchronously triggered bulk-deletion.  This makes
deletions of many keys considerably (over ten times) faster, for large
cases.

The minimum boto version has been incremented to 2.2, the first
version to support multi_delete.

Signed-off-by: Daniel Farina <daniel@heroku.com>