Dtype conform

fixed the case where the code failed if loaded data was type ``float32`` and the derived array was type ``float64``, for example -- now the derived array is cast to match the previously-existing array. 

To do : 

- [ ] case where one of the families has a derived array of a different type than the array for another family on disk, e.g. 

```
s.s['rho'] = np.zeros(len(s.s), dtype = np.float64
```
but the ``s.g['rho']`` loads data from disk with type ``np.float64`` -- what should be done in this case?