PTFM-12436 Update code that previously used auth.user_info.

Summary:
Some dx commands and tests no longer need authserver for getting user_info.

* dx whoami does not query authserver.
* Added new tests for "dx whoami".
* ssh_config and verify_ssh_config do not query authserver.
* test_dx_ssh_config and test_dx_ssh no longer need user_info to get the
  current user's pubkey.
* test_dx_upload_with_upload_perm no longer needs user_info to decrease
  perms for the current user.
* Various app tests no longer need user_info to set the billTo on apps.

Test Plan:
added new tests for "dx whoami". Other affected subcommands have
existing tests.

Reviewers: orodeh, klai

Reviewed By: klai

Differential Revision: https://phabricator.dnanexus.com/D34
Use dxlink-aware JSON encoder
dx-log-stream: Amend 9d2c8fc with a comment; sanity check against running on Python 3
PTFM-12671 Catch SSL socket timeout errors in dxpy retry logic
Accept 503 responses even if they don't have Retry-After set.
Update pip dependency from v1.5.4 to v1.5.6
Update setuptools dependency from v3.4.4 to v5.4.1
Update pexpect test dependency from v3.2 to v3.3
Show more helpful stacktrace for exceptions raised by DXHTTPRequest.

Still needs some work to avoid producing a lot of noise, though. WE
SHOULD PROBABLY NOT LET THIS GO TO PRODUCTION IN ITS CURRENT STATE.
PTFM-12580 dx login improvements

- Allow up to 3 login retries
- Re-query username on empty input
- Cache username and password upon otp required message (which indicates username and password match)
- Produce a more specific error on otp mismatch
- Introduce a test case (disabled by default)