This release adds more functionality to optimization trajectory workflows and makes imports simpler.
**What's New**
* The `IdentityLearner`, which mimics a synthetic function. This allows for the use of a synthetic dataset as a surface on which to test optimization (15).
* "Rook design", a simple optimizer that allows you to investigate how step size and pruning impact the ability of an optimizer to work on a given response surface (15, 25).
* Package-level imports. Now all featurizers can be imported from `smlb.features`, all learners can be imported from `smlb.learners`, all optimizers can be imported from `smlb.optimizers`, and all workflows can be imported from `smlb.workflows`. Datasets are divided into experimental/synthetic, and can be imported from `smlb.datasets.experimental` or `smlb.datasets.synthetic` (21, 25).
**Improvements**
* Optimization trajectory results are now plotted as a line with shading instead of as a set of scatter plots. The median score over all trials is drawn as a solid line, and specified quantiles are shaded. The default is to shade from the 0.25 to the 0.75 quantile. The max/min values can optionally be drawn as dashed lines (22).
* The `ExpectedValue` score can now specify that lower values are optimal (23).
**Fixes**
* Fixed a bug that caused optimizers to drive towards the wrong target when used with `ExpectedValue` scores (20).