Move large tar member write blocking file I/O out of main process

WAL-E uses cooporative scheduling via gevent.  As a result, long
system calls that block execution can cause stalling in other
greenlets.

That is a particularly common occurrence when downloading backups
quickly and write() can block for long periods.

To blunt that, write out files larger than the OS pipe buffer via a
'cat' connected to Python via a non-blocking pipe.  Even should 'cat'
block, this will present as an EAGAIN in Python, allowing another
cooporative task to be scheduled.
Use module import rather than function import

Function imports make mocking harder and are less consistent with modern
WAL-E style.
Use larger buffers for temporary file reads for performance

As witnessed this would otherwise perform small 8K reads by default.
Reduce the amount of syscall thrashing and memory shuffling by Python
by asking for larger amounts from the kernel at a time.

It might be better if one could use the "async I/O via cat" trick.
That would allow the program to schedule concurrent operations more
aggressively.  However, that is hard to do because of boto's
key.set_contents_from_file assumes a non-stream file object with .tell
and .seek operators.
Use s3-external-1 endpoint for us-standard

This is the endpoint in us-east-1, where most instances are.  This is
not being applied to the v0.6 maintenance releases to avoid changing
behavior for those who are closer to Seattle.
Elide other backends besides S3 in requirements.txt

It's not clear how to make things cleanly optional but not a usability
nightmare (e.g. installing *no* backends by default for 'pip install'
based people) within the Python packaging framework, so don't try..for
now.
Enable S3 server-side encryption