3527: Find Docker images natively inside Collections.

We previously relied on the docker_image_hash link to treat a
Collection as a Docker image.  This was safer and simpler, but it
creates obstacles for project sharing.  When we have a Collection
locator that we want to treat as a Docker image, we now check that it
has a single file with a single 64-hexdigit tar file in it, and use
that as the hash if so.  This should still prevent clear mistakes
while removing some of the obstacles to sharing.
3527: Support using a Docker image from any stream in a Collection.

This makes Docker image detection more consistent between crunch-job
and the API server, and is more user-friendly.
Merge branch '3527-infer-docker-hash-wip'

Closes #3527, #3529.