Now that everything lives in src/av98/ as per the latest Python
fashion, it's a problem to have a file named av98.py. So split
it out into main.py (which just implements the argument parsing)
and client.py. The old clientcerts.py has become certmanager.py
so that tab completion for client.py is quick and easy.
Instead of littering /tmp with one file per download plus one per
rendered gemtext file, just reuse the same two files over and
over. If enabled, caching creates separate copies.
Pretty sure this solves Issue #35, but I'll test and close that
after also improving the use of cache files...
1. Move client certificate handling stuff inside of _send_request().
2. Change _fetch_over_network() to not be recursive, by just looping
through calls to _send_request(). This facilitates moving the
redirect-tracking state inside _fetch_over_network(), instead of
keeping it in GeminiClient.
3. Also allow _fetch_over_network() to save response to a provided
filename, and use this to implement do_save(), rather than
_go_to_gi(). This avoids the need for awkward gymnastics with
the internal state.