Remove deprecated RepositoryInfo code and modernize the class.

Review Request #12556 — Created Aug. 19, 2022 and submitted — Latest diff uploaded


This removes the deprecated parameters, attributes, and methods from
RepositoryInfo. These include name, supports_changesets,
supports_parent_diffs, and find_server_repository_info().

It also cleans up the module, switching to type annotations, moving
logging elsewhere, and adding a __repr__ to ease debugging.

Docstrings have been updated to use str instead of unicode, and
each attribute has been documented.

The constructor now requires keyword arguments. This is important as we
have code that subclasses this, and arguments are kind of a mess.
Currently, callers can continue to pass in positional arguments, but
that is deprecated and will result in a warning.

We have such callers in the codebase. Those will be updated separately.

Unit tests pass on Python 3.7-3.11.

Posted this change for review.