Introduce reading and writing of aggregation datasets (introduced at CF-1.13).
For the most part this involves moving existing code from cf-python, and inserting it into cfdm (after a bit of sensible refactoring).
This use case was the main reason for #312