Relax conditions on data when writing to observables

- allow scalar observables
- don't insist on matching dtypes (h5py will do the conversion)
- raise an exception if the shape of a value doesn't match,
  rather than silently dropping the value