refactor: gitlab jobs abstraction
motivation:
- preparation for #22
- makes a more clear distinction between gitlab jobs and catladder jobs
- should make it easier in the future to create non-gitlab pipelines
there was a bit of confusion of what is a gitlab job and what is a catladder job, in particular how jobs are adressed.
In catladder, we always have a path componentName-->env-->job
and things like needs
can adress other components as well. In gitlab, you have a flat list of jobs and each job needs a distinct name, so we had to give a full name to jobs that contains env and componentName. However this was done in a bit of an inconsistent way. There was a "patching" of catladderJobs that just renamed its jobName as well as references to other components (like needs or on_stop). Now this transformation happens where the transition of catladderJob to gitlab job happens. This is a clear separation