More changes to support calibrations

- Sparse types can now be defined without a value encoding
- NaNs are supported as fill values