Cherry-pick of upstream PR go-gitea/gitea#37518 onto feat/projects-api.
The PR is itself a rebase of #36831 onto main, adapted for the
multi-projects-per-issue model added in #36784.
Endpoints (all under /repos/{owner}/{repo}/projects...):
GET . list projects
POST . create project
GET /{id} get project
PATCH /{id} update project
DELETE /{id} delete project
GET /{id}/columns list columns
POST /{id}/columns create column
PATCH /columns/{id} update column
DELETE /columns/{id} delete column
GET /columns/{id}/issues list issues in column
POST /columns/{id}/issues/{issue_id} add/move issue to column
DELETE /columns/{id}/issues/{issue_id} remove issue from column
POST /columns/{id}/issues/{issue_id}/move move between columns
Source: https://github.com/go-gitea/gitea/pull/37518