Notable changes:
- Conditions on patterns are now logical expressions and use overloaded operators, `&`,`|`,`!` (`~` in Python)
- Replacement now accepts settings, currently the only setting is `non_greedy_wildcards`
- `Function.NUM` has been renamed to `Function.COEFF` and `to_num` to `to_coeff`
Migration guide:
- In Rust, you can now use `into()` to convert a tuple of the wildcard identifier and the pattern restriction into a condition
- In Python `req_ntype(..)` and `req_ngreedy` are deprecated. Use `~x__.req_type(..)` and option `non_greedy_wildcards=[x__]` instead