GRIB2 GDT 4.

This PR extends the new GRIB2 capability to include GDT 4.

- [x] Rebase against #1354 
- [ ] Deal with MDI
@bjlittle it's *just* the case of `0` or `MDI` that I was querying - I _think_ your interpretation of the rest of it is OK!

Looking a little harder at the spec, I see that the note in question here applies to _both_ the basic angle and the subdivisions. And so it all comes down to what group of two "respective" is applied to. I can see two options:
 * The _value_ that `0` and `MDI` should be coded to if one of them is encountered. In this case **both** `basicAngle` and `subdivisions` should be set to this **same** value.
 * The _values_ that `basicAngle` and `subdivisions` should be coded to if **both** of them have the **same** value in the message. This is the case that you state above.

Of the two, I feel that the first option is the more natural reading of the note in the spec, but that the second option (and the option you've chosen) makes more physical sense for representing the data. 

As such, I'm happy to accept your current interpretation if you are! :smile: