What does this MR do?
This MR adds an ability to define group-wide variables (Currently, only project-wide variables are available). This MR is specifically focusing on BE change. FE change would be another MR.
This MR's proposal is https://gitlab.com/gitlab-org/gitlab-ce/issues/12729#note_28734045
Are there points in the code the reviewer needs to double check?
Groups can be nested. That means we have to look up related group-wide variables recursively. The process should be efficient.
Why was this MR needed?
Screenshots (if relevant)
TBD (For the first iteration, it'd be like https://gitlab.com/gitlab-org/gitlab-ce/issues/12729#note_28734045)
Does this MR meet the acceptance criteria?
Changelog entry added, if necessary
API support added
Added for this feature/bug
All builds are passing
Conform by the merge request performance guides
Conform by the style guides
Branch has no merge conflicts with
master(if it does - rebase it please)
Squashed related commits together
What are the relevant issue numbers?