Container manifests can define docker registry

- Allows for each image to be pulled from a custom docker registry
- ContainerManifest can specify authentication for a private registry
- No breaking changes
As I mentioned in #554, if the structure contains a map or slice, then it is mutable anyway even if you pass it by value.

Specific to this PR, since all members in api.DockerRegistry are string, so passing it by value would be fine. However, I'm not sure if we will add any list/map into this structure.