GRIB support for saving time increment for time aggregated data (PDT4.8)

This PR enhances the existing code for saving data in PDT 4.8. As well as refactoring the code it adds support for parsing and saving the cell_methods on cubes to determine the interval (e.g hourly or daily) of the data that has been summed/averaged/...
Your logic is sound and there is a something of a conflict here. The issue is that the existing code (i.e. upstream/master) blows up if the cell method coord name is not `time`. So, while the `_cube_is_time_statistic()` applies a broader criteria, the current (and my new) pdt4.8 code can only handle the case where it is actually time. See https://github.com/SciTools/iris/blob/master/lib/iris/fileformats/grib/grib_save_rules.py#L526 and https://github.com/SciTools/iris/blob/master/lib/iris/fileformats/grib/grib_save_rules.py#L503-L506 

I've not attempted to change this logic, but I hope I've made the current limitation clearer. My thinking was that we may extend `product_definition_template_8()` to handle `season` or `month` based cell methods at some point. I could move this limitation/check up to `_cube_is_time_statistic()`, but I'm partial to leaving it where it is.