2752: Clean up arv-put imports.
2752: Refactor Python SDK test_collections.

This eliminates duplication in setup and teardown code, and clarifies
dependencies between tests a bit.
2752: Clean up after Python SDK Collections tests.
2752: Add tests for CollectionWriter.write_directory_tree().
2752: Remove trailing whitespace in arv-put.
2752: Add method CollectionWriter.write_file().
2752: Reuse CollectionWriter.write_file() where possible.
2752: Implement CollectionWriter with a work queue.

This will make it easier to capture and restore state.
2752: Add arvados.collections.ResumableCollectionWriter.

This is a subclass of CollectionWriter that only accepts data from the
filesystem.  In exchange, it can record its own state, and resume
writing from one of those states.  arv-put will use this to make the
user experience nicer if a long upload is interrupted.
2752: Move Python tests to dedicated subdirectory.

This better follows Python convention, and will let us build out our
test frameworks without cluttering the root source directories.

This change brings a small change to the way we run tests.  Pass the
directory name to the discover command:

    $ python -m unittest discover tests
2752: Move arv-put functionality to arvados.commands.put.

This will make it easier to unit test arv-put, and make it easier for
developers to extend or customize its functionality.
2752: Extract common Python test methods.

I'm going to reuse these to test arv-put.
2752: Add basic test for arv-put.
2752: Generate cache filenames from arv-put arguments.
2752: Add ResumeCache to arv-put.

This class encapsulates all the functionality necessary to
de/serialize ResumableWriter state.
2752: Add ResumableCollectionWriter serialization to arv-put.
2752: Factor out arv-put byte tally, and test.
2752: Separate and test progress reporting functions.
2752: Refactor progress reporting in arv-put's CollectionWriter.
2752: Add ResumeCache.restart().

This will make it easier for the user to bypass the cache.