------------------
- Type hint annotations for functions and methods are complete (121).
- Affine raises ValueError if initialized with values for g, h, and i that are
not 0.0, 0.0, and 1.0, respectively (117).
- Python version support was changed to 3.9+ (110).
- Switch from namedtuple to attrs for implementation of the Affine class and
use functools.cached_property(), which absolutely requires Python 3.8+
(111).
- Source was moved to a single-module affine.py in the src directory (112).
- Add numpy __array__ interface (108).
- Add support for ` matrix multiplier methods (122).