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).
There's a mismatch here between the lifetime of the GribMessage object and the lifetime of the `grib_id` message handle. For example, I'd expect the following to fail:
```python
messages = list(_messages_from_file(filename))
print messages[0].keys
```