Support feature collections, add tests, refactor.

In the midst of adding support for `kvlayer.instance_collection.Chunk`
to the s3 reader/writer stages in streamcorpus pipeline, I did a fair
bit of refactoring and added tests. (Tests are skipped if the
AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables are
not set.)

Notably, `verify_via_http` is now deprecated. In its place, you should
use `verify`. It has the same semantics as `verify_via_http`, except
verification will be done over HTTP when the data is public and over
s3's API when the data is private. The visibility of the data can be
controlled by setting `is_private`. Existing configurations do not
*need* to be changed: `verify_via_http` is now a deprecated synonym for
`verify`.

I've also updated the documentation, removed a lot of duplicate code
from `to_s3_tarballs` and unified the `retry` logic.

I believe there no breaking changes, and to my knowledge, my changes
should not introduce any change in performance.
Support multithreaded s3 testing.

The tests were flawed because it assumed that each test ran in
isolation. When py.test uses multiple cores, this is not true.
Therefore, each test now uses its own unique path prefix.