infra/gcp/staging: rewrite into functions
infra/gcp/staging: rewrite into functions

Following a pattern that I've used for ensure-main-project.sh and
ensure-organization.sh that involves moving everything into functions or
readonly constants, and then an entrypoint at the bottom.

So the entrypoint is no longer a massive for loop and blocks of code,
but instead ensure_staging_projects, which calls:

- ensure_staging_project for each repo, which calls:
  - ensure_staging_gcs_bucket
  - ensure_staging_gcr_repo
  - ensure_staging_gcb
  - staging_special_case__k8s_staging_foo (if it exists)
- ensure_release_manager_special_cases

I commented functions heavily, and dropped comments if the logging
statement was basically saying the same thing.

Other changes:

- Stop using empower_prow, prep for using service-account per-project
- Change ensure_staging_gcb_builder_service_account to also grant
  write access to GCS and GCR directly from that service account

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