Use pydantic structures for Task.data
Currently Task.data is a dict with some json schema validation. This works, with some shortcomings:
- it does not play well with python typing
- it does not validate in some cases (see #207)
Task.data can be ported to a pydantic structure specific to each Task