Refactor group-level custom project template discovery
## Summary
Refactor how group-level custom project templates are discovered and displayed. The current implementation uses `GroupsFinder` which includes unnecessary logic and generates poorly performing queries (large union queries across all accessible groups). This epic tracks the work to create a dedicated finder, update the UI to use it behind the `constrain_group_project_templates` feature flag, and roll out the change.
### Background
Investigation into https://gitlab.com/gitlab-org/gitlab/-/issues/296815 revealed that the reported behavior is not a bug but rather a consequence of how group-level templates are queried. The fix requires a refactoring of the template discovery logic rather than a bug fix.
Key problems with the current approach:
- `GroupsFinder` includes logic not needed for template discovery and is not well suited for optimizing this query
- Queries generate large unions linking every public/internal group and every group the user is a member of, causing performance issues
- Pagination is broken because we paginate groups (which can have varying numbers of projects) rather than projects directly
- The `constrain_group_project_templates` feature flag was introduced to address this but the underlying implementation needs to be rebuilt
### Goals
1. Create a dedicated finder scoped to a specific group for discovering group-level templates
2. Update the template retrieval logic to use the new finder behind the `constrain_group_project_templates` feature flag
3. Add a UI view for selecting a target group when no group context is available
4. Roll out the `constrain_group_project_templates` feature flag
### Related
- Closed (won't fix): https://gitlab.com/gitlab-org/gitlab/-/issues/296815
- Feature flag rollout: https://gitlab.com/gitlab-org/gitlab/-/issues/586332
- Parent epic: https://gitlab.com/groups/gitlab-org/-/work_items/2767
epic