release_tool: Rewrite the repository maps and all handling of it.
release_tool: Rewrite the repository maps and all handling of it.

This came about because of an innocent looking change in
mender-conductor, which added a second Docker container,
email-sender. The release_tool was not equipped to handle this case
where a repository can have more than one container. In addition
Docker containers can be associated with more than one Docker image,
such as in the mender-conductor case, which also can be served by
mender-conductor-enterprise.

So in essence we now have an n-to-n relationship between all the three
component types, git repos, docker images, and docker container
names. This required significant changes, and we now maintain kind of
graph in the JSON (the COMPONENT_MAPS variable). With that we make a
new type, Component, which holds an instance of either of the three,
and tries to do some guarding against using the wrong type in any
given piece of code.

We also give it a fourth "meta type", the yml type, which is relevant
only when updating the docker-compose*.yml and other-components.yml
files, which are used for version tracking, even for components
without Docker containers. All components except integration are
guaranteed to be found in one of the yml files.

Changelog: None

Signed-off-by: Kristian Amlie <505e66ae45028a0596c853559221f0b72c1cee21@northern.tech>

pasinskim/integration,pasinskim/integration,pasinskim/integration