MeshSeries aggregation function
Purpose
Added a function aggregate all timesteps in a meshseries given an aggregation function. This was in order to get rid of the plot_limit function by splitting functionalities. Now you can achieve the same with two steps: 1. compute the min/max/variance/whatever aggregate of the meshseries and 2. plot it with the main "plot" function from meshplotlib.
This, as well as the result of the difference functions write into a new mesh with a datanem using a suffix. get_preset was adapted to also find data in meshes where the output_name is only part of the data_key
update tests and examples accordingly
also many type fixes to soothe mypy
further, used pv.UnstructuredGrid as a uniform type hint for all functions which expect a mesh as input (with few exceptions).
finally some small code improvements here and there