**Minimal media workflow**
The minimal media workflow is now more flexible and supports all options of the
`minimal_media` base function including:
- specification of a required community growth rate, taxon growth rates, or any combination
- support for minimizing the number of media metabolites
- support for weights allowing to minimize mass uptake, carbon uptake etc.
- returning the growth results obtained by the media minimization
**Growth Results**
`GrowthResults` is now a DataClass and gains some new helpers:
- combining two GrowthResults via the addition operator (`r1 + r2`)
- concatenating many growth results via `combine_results`
- converting a `CommunitySolution` to a growth results object
**Other**
Renamed `fix_medium` to `complete_db_medium` for consistency with `complete_db_medium`
and to make it more clear what is happening.
Some black style fixes across the code base.
Updated optlang version for better numpy support.
Fix a bug where `minimal_medium(manifest, ..., summarize=False)` would crash.