feat: ✨ label CRUD tools and resource-templates (closes #190)
- Repo-label CRUD: create_repo_label, edit_repo_label, delete_repo_label,
get_repo_label via forgejo-sdk/v3
- Org-label CRUD: create_org_label, edit_org_label, delete_org_label,
get_org_label via pkg/forgejo DoJSON
- Safe delete: delete_mode=safe (default) refuses in-use labels with count;
delete_mode=force overrides; org count best-effort over visible repos
- Color normalization: accepts rrggbb or #rrggbb, 6-digit only, rejects
invalid with error (3-digit shorthand intentionally excluded)
- Resource templates: forgejo://repo/{o}/{r}/label/{id} (single),
forgejo://repo/{o}/{r}/labels (bounded list, EmbeddedListCap ceiling),
forgejo://org/{org}/labels (bounded list); all use operation/resource helpers
- URI parsers: ParseLabel, ParseLabels, ParseOrgLabels added to resource/parse.go
- Unit tests covering happy paths, color normalization, partial PATCH,
empty-edit reject, delete in-use/force/404, resource over-cap truncation