Client timeout (#3998)
This commit authored in part by @tm1000.
Closes #1993
Closes #2096
Closes #2428
Notes:
- You may want to look at the original diff:
https://github.com/vercel/turbo/pull/2428/files?w=1
- I've completely removed `pflag` at this point. It was only being used
in tests.
- I've added a new "config" in Rust land, for the API client. It only
accepts `timeout` right now.