Major overhaul.
- Requirement is now python >= 3.10
- Renamed 'matchers' to 'groups' to be consistent with regex tools.
- Removed the 'group' spec (no more 'group:name' stuff, a group only has a name now).
- Group definition is now orderless (rgx, fmt, etc can be specified in any order).
- `:opt` is now only a flag for specifying the group as optional
- new `:bool=true[:false]` property. Note the order from old `:opt` is reversed. Options are strings (not regex).
- Removed caching of regex and its resulting complications.
- Renamed `Finder.get_matches` to `find_matches`.
- Renamed `Finder.get_filename` to `make_filename`.
- Better API to retrieve values with `Matches.get_values` and `Matches.get_value`.
They now take into account the 'discard' option.
- `Matches.__getitem__` now wraps `Match.get_value`.
- Moved fixing to the Group object, not the Finder.
- `make_filename` now re-use the value-fixing done by groups, instead of having its own (nearly duplicate) logic.
- Make most Finder attributes public.
- Make package typed.
- Refactor format module.
- Use sub-classes for different format types, avoiding frequent dispatching.
- Add 'z' option to format (just allow it in format string, nothing else) (added in 3.11).
- Add alignment/fill support for string formats.
- Fixed many minor bugs.
- Better test suite relying heavily on hypothesis. Now tested on OS other than linux.