Add htmlcov to .gitignore

This directory is generated by pytest-cov which gathers test coverage,
and it is unlikely anyone would want to commit it.

Conflicts:
	.gitignore
Don't spin in tight loops with sleep(0), wait 100ms

In principle sleep(0) is all that is necessary to allow another
greenlet to be scheduled, but when encountering defects in WAL-E --
particularly infinite loops -- this could cause unnecessary thrashing
by one's computer.

Sleeping for 100ms doesn't make tests take appreciably longer but does
prevent bugs from mercilessly spinning the CPU.

Conflicts:
	tests/test_s3_deleter.py
	tests/test_wabs_deleter.py
	wal_e/retries.py
Call fsync on newly restored files after a tar extract

Without this, a poorly timed whole-system crash (soon after "wal-e
backup-fetch" termination) could cause data corruption since there was
never an explicit request by WAL-E to the kernel to flush pages before
returning from 'backup-fetch'.

The mechanism used here is significantly different than the source of
the backport, v0.7, because WAL-E v0.6 doesn't process individual tar
file elements.  So instead, a secondary pass is used over the written
files to perform fsync.

Thankfully, some of the testing can be backported neatly in spite of
this difference.

Editorialized by Daniel Farina <daniel@heroku.com>
Updating project helpers for upcoming updates.

Conflicts:
	.gitignore