change attrs to dataclasses (#521)
* change attrs to dataclasses
* post-merge fix
* more fixes
* switch to array_dataclass
* use _augment_array_dataclass
* restore attribute validation
* mypy?
* Disable pylint invalid-field-call
---------
Co-authored-by: Andreas Kloeckner <inform@tiker.net>