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)
I don't get why you're doing this ?
So... You are patching p_d_t_0 with a mock, and adding a side effect so it puts a dummy cell method in the metadata...  
Is all this just to check it is called with the expected args ?
( AFAIK the use of the cell method is a red herring, as the 'real' call does not produce one )

So... why not just test the patch call-list : ensure that p_d_t_0 is called just once, with the same metadata object you passed in ?