New features:
- the `interaction` module implements the Int-construction from balanced to ribbon categories, see PR https://github.com/discopy/discopy/pull/144
- equality of `symmetric.Diagram` computes hypergraph isomorphism, so that we get all the axioms for free
- similarly, we get the axioms of `traced`, `compact`, `markov` and `frobenius` for free
- `Diagram.from_callable` allows to build diagrams as decorated python functions
Main changes:
- `Matrix` now infers the `dtype` if it is not specified, see PR https://github.com/discopy/discopy/pull/161
- `balanced.Diagram` is now a subclass of `traced.Diagram`
- `cartesian` is renamed to `markov` and `frobenius.Diagram` is now a subclass of `markov.Diagram`
- `hypergraph.Diagram` is renamed to just `hypergraph.Hypergraph`
- the new `Hypergraph` class is a named generic parameterised by a `category`, in this way it does not depend on any of symmetric, compact or frobenius
- the `hypergraph.Box` class is not needed anymore, it is replaced by a method `Hypergraph.from_box`
- `upgrade` and `downgrade` are renamed to `from_` and `to_diagram`
- `Hypergraph.is_progressive` now allows spiders to from one input to many outputs
* an extended signature for `Diagram.encode` to allow easier transition from the old v0.5 syntax `(dom, cod, boxes, offsets)`
* a new class `pregroup.Ty` is introduced, it subclasses `rigid.Ty`. It overrides the adjointness check to be more flexible and allow for forbidden cups and caps, e.g. `Cup(n.r, n)`
* `pregroup.Diagram` is now a subclass of `frobenius.Diagram` instead of `rigid`. This allows for spiders and swaps in pregroup diagrams, while retaining the distinction between left and right adjoints
* two new methods `closed.Ty.is_under` and `is_over` to account for the fact that tensoring an exponential object with the empty type does not yield an exponential object
* refactoring of the `quantum` module to make the gate application methods cleaner, removing the need for `Circuit.__getattr__`