Instance-level project templates
### Problem to solve
Especially in larger projects, setting up new GitLab projects from scratch can be a repetitive task. Often, there is a lot of configuration files and boilerplate required.
We already have project templates, but these are GitLab-owned and cannot be customized (refered to as "vendor templates"). A solution to set up project templates based on actual GitLab projects is needed.
### Further details
Relevant use cases for project templates on instance-level:
- Unchanged, default templates only (you have vendored templates only)
- As an admin, add your own templates based on a selected group (have both vendored and custom)
- Add additional custom templates
- ~~Disable vendored templates (same effect as disable templates)~~
### Proposal
Let's add the option for Administrators to select one group in the GitLab instance that holds GitLab projects that are offered as project templates, when creating a new project.
- As an Admin I can select an (one) existing group whose projects should serve as instance-wide project templates
- Every project within this group will be available as project template when creating a new project
- ~~A new default `_gitlab` group contains the packaged GitLab-delivered project templates~~
- [x] Move into separate issue
- As a users I can choose from built-in vendor templates and custom instance-level project templates (if defined) when creating a new project
- Template types are separated via individual tabs
### Designs
#### Changing template source
**Admin area → Settings → Custom project templates**

#### Create project from a template
| Built-in | Custom |
|----------|--------|
|  |  |
#### Implementation details
- Projects are displayed as templates based on the **default branch**
### What does success look like, and how can we measure that?
* If a template group is defined, projects inside this group are made available as project templates when creating a new project.
### Links / references
- gitlab-ce#32420
- gitlab-ce#36886
issue