infra/gcp/main: refactor into functions
infra/gcp/main: refactor into functions

specifically:

- refactored by:
  - grouping blocks of code into functions
  - parameterizing those functions on PROJECT
  - adding ensure_workload_identity_serviceaccount to handle the sundry
    single-role service accounts intended for use by GKE clusters
- prune main_project_services down to just what we directly use
  - drop compute: direct dep of container
  - drop oslogin: direct dep of compute
  - swap bigquery-json for biquery: the former doesn't exist
  - add comments explaning each of the services we do use
- fix a bunch of shellcheck nits
- add some TODO(spiffxp) lines for role or binding removal as followup

kubernetes/k8s.io,kubernetes/k8s.io,kubernetes/k8s.io,kubernetes/k8s.io