Backend: Stages are not flattened when substituted via reference tag
### Summary
We can reuse common parts of CI configuration when setting up `script`, `before_script`, and the like. This really comes in handy. Alas, we cannot do this to `stages` yet.
### Steps to reproduce
Paste the following to linter:
```
.common_stages:
- build
- deploy
stages:
- !reference [.common_stages]
- analysis
```
### What is the current *bug* behavior?
Linter gives error: `stages config should be an array of strings`
### What is the expected *correct* behavior?
`stages` are flattened the same way it happens to `script`, `before_script`, etc.
GitLab treats resulting `stages` as if it was written the following way:
```
stages:
- build
- deploy
- analysis
```
### Environment
GitLab 13.10
### Misc
Should be related to gitlab-foss#32973.
issue