Refine pipeline stages
## What does this MR do?
Introduces a concept of `Ci::Stage` to make it easier to have detailed statuses.
## Why was this MR needed?
This is needed to simplify the handling of `Ci::Statuses` and make the `Stage` actual concept in code:
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7889
See merge request !7927