[v10.x] src: refactor options parsing
Cherry-pick of #22392, the only two merge conflicts being
- Neighbouring lines in
env.cc
- The extra
--expose_http2
/--expose-http2
no-op option pair.
A few commits depend on this (or fix this up, but apply cleanly), so this would be good to get landed soon (read: please approve