These axis arguments can be generated lots of times for large plots. We can save time by caching them in a dictionary. For my large map test plot:
```
Before: 1.075 s (3393429 allocations: 183.49 MiB)
After: 959.024 ms (3393294 allocations: 181.64 MiB) - 10% improvement in speed, small decrease in allocations
TTFP Before: 7.543192 seconds (26.79 M allocations: 1.544 GiB, 3.89% gc time, 0.06% compilation time)
TTFP After: 6.886222 seconds (23.58 M allocations: 1.355 GiB, 3.63% gc time, 0.07% compilation time) - 8% improvement in speed, 12% fewer allocations, 12% lower allocation amount
```
The cost of this is, I think, just 3-4 kb. Is there a function to read out the size in memory of a dictionary? `sizeof` for the dictionary itself just returns 64.
* No exception thrown in `apply_recipe` fallback
Throwing an exception here can vastly slow down plotting, as it happens frequently. Returning an error value instead, which the calling function can check, can speed up plotting 2x. An accompanying change is necessary in RecipesPipeline.jl, assuming this value is suitable.
* Bumped compat for RecipesPipeline, tentative
* Bump patch version
* Fix wrong versioning
Co-authored-by: t-bltg <tf.bltg@gmail.com>
* fix series_annotations for bar
* fix my typos in bar recipe
* fix fillrange of annotation series for groupedbar
* fix series_annotations for bar
* fix my typos in bar recipe
* fix fillrange of annotation series for groupedbar
* fix series_annotations for bar
* fix my typos in bar recipe
* fix fillrange of annotation series for groupedbar
* fix series_annotations for bar
* fix fillrange of annotation series for groupedbar