2879: Store Docker image repo+tag together in one tag.

It doesn't make sense to query the tag independently of the
repository, and this change will make the common case of querying both
together easier.
2879: Fix SLURM node separator when installing Docker images.
2879: Let ArvadosModel.readable_by callers specify table name.

This makes it possible to use readable_by in queries with arbitrary
joins.
2879: API server maps Job Docker image constraints to Collections.

Doing this translation in the API server helps ensure that one piece
of software makes one consistent decision about which Docker image
should be used to run the Job.
2879: crunch-job uses Job Docker information provided by API server.
Merge branch '2879-job-api-docker-images'

Closes #2923, #3010.