Add io methods to work with pickling
Add io methods to work with pickling

- By default pickle saves all attributes of an object,
which is both problematic with jitted attributes (which
cannot be pickled because the hashes are different) and
wasteful since it will tend to save data that is trivially
recomputeable (transform matrices etc).
- All IOAble objects now have __getstate__ and __setstate__
methods that pickle uses to get and set the correct attributes,
allowing us to only pickle the _io_attrs_ defined in each class
- This also makes pickle and hdf5 io methods equivalent from a
data perspective.

PlasmaControl/DESC,PlasmaControl/DESC