2879: Factor out arv-put's cache creation to a utility library.

This function will be useful for the Docker image uploader, and
probably other tools as well.
2879: Split arv-put's ArgumentParser into module segments.

This will let us use different pieces as a parent parser for other
tools, which I plan to do for the Docker image uploader.
2879: Move Python is_hex function to arvados.util.
2879: arv-put main() returns what it prints.

This will enable other tools to reuse the results.
2879: Add arv-keepdocker command.

This puts a Docker image in Keep, and makes Arvados links to help find
the Collection by the image's names.
2879: Docker Keep installer returns 0 if image already installed.
2879: Clarify Docker image search behavior in Keep installer.
2879: arv-keepdocker reports a better error for ambiguous hashes.

Refs #2879.
Merge branch '2879-docker-image-installer'

Refs #2879.  Closes #2998, #3006.