Fix wiki links in API wrappers
[PTFM-11907] Encode URLs using UTF-8 (see also RFC 3987)
Test for 2a01707
Changelog and version updates for v0.98.0
Fix incomplete comment
[PTFM-11937] readline bundling build fixes
Suppress stack trace on dx run subprocess failure
[PTFM-11864] Exclude test packages from Python install
Fix "warn" util method
PTFM-11932 Add some diagnostics

* When PrioritizingThreadPool encounters an exception, print it (even
  though the consumer of the future may wish to suppress it).
* Add an assertion to ensure that _queue_lock is held when _next is
  called.
* More distinctive exception when reading 0th item from an empty queue.
PTFM-11932 Require synchronized access when reading self._queues.

This prevents a race condition where the producer has put an empty deque
into _queues and not gotten around to putting anything in it yet, and
the consumer sees the empty deque (which is in contravention of the
invariant we've documented). These manifested as "IndexError: deque
index out of range".

It should also prevent a (never before observed) race condition where
the producer sees that the queue it wants to write to already exists,
but before it gets around to appending to it, the consumer pops its last
item and removes it, so that the producer crashes when it actually tries
to do the append.
PTFM-11932 Mostly revert added diagnostics

This reverts parts of commit 0af65e22ca6fd067afee50c8d16e758c9fb5cfb7,
keeping the assertions we added.
Changelog and version updates for v0.99.0
Introduce dxpy.cli.INTERACTIVE_CLI

This should be used when determining whether to use interactive prompts, instead of sys.stdin.isatty() or sys.stdout.isatty().
[PTFM-11713] Expand tests for dx-app-wizard
Revert part of c6d5755, will fix in a branch later
Truncated requests may only be retried if route is idempotent.

* Update retry logic documentation to reflect this.

* Previously, truncated requests would always be retried. This could
  have caused the requested action to be repeated twice. However,
  perhaps this change is somewhat academic since I don't know if short
  responses can or are likely to get truncated in arbitrary places, and
  most or all requests with long responses are idempotent anyway.