Product definition template 1.

This PR extends the new GRIB2 capability to include product definition template 1.

I'm conscious that I've created utility functions:
 * `reference_time_coord`
 * `forecast_period_coord`
 * `validity_time_coord`

which could/may be more generic to accommodate future functionality. But since I don't have a use-case or pattern for *how* to make them generic, I'm leaving them as is and assuming that follow-on PRs will tend towards the *agreed* solution (@pp-mo)
You know, this approach is looking quite generally useful.  I wonder if we could create an extension to IrisTest to do this ?  
E.G. instead of : 
```patch.append(mock.patch(this, side_effect=func))```, just write 
```self.setup_patch(this, side_effect=func)```