Add lightweight grib message wrapper

Provides a lightweight wrapper to a GRIB message. This, along with #1300, provide some early elements in the process of improving Iris' GRIB loading capacity.

Note that this new GRIB loader loads only the **coded** keys from a GRIB message, not any of the computed keys. However the gribapi function, `gribapi.grib_skip_computed()`, which should return only the coded keys from the message, has a bug in gribapi < 1.13 so to prove the concept of this GRIB wrapper it has been designed to work with a single message from a specific GRIB file. However once the the new version of gribapi is available the code below should function as expected (i.e. returning only the coded keys from the message).
Good point - if the integer hasn't been generated by gribapi then it won't work, i.e. any old integer won't work so yes I'll change that to make it explicit.

Incidentally, this is the reason I kept 'grib' in `grib_id` - it isn't any old int but something generated by gribapi, though I could change it to `message_id` and keep the idea that it's a "special" int, but without the repetition of grib..?