Update gribapi dependency to v1.12.1

This updates the Iris dependency gribapi from v1.9.16 to v1.12.1. This causes very little in the way of changes other than to test results, but does require a modification of the install process for gribapi on Travis.

The test changes come down to the following...

The `test_grib_load` change results from a bug in gribapi v1.9.16, where it mis-calculated `_periodEndDateTime` from a `stepRange`. This can be empirically demonstrated: the GRIB template defines a `_periodStartDateTime` of 20070323 12:00:00 and the maximum `stepRange` is 55hrs. Adding these together shows the correct `_periodEndDateTime` is 20070325 19:00:00. This is documented in the [gribapi v1.9.18 changelog](https://software.ecmwf.int/wiki/display/GRIB/GRIB+API+version+1.9.18+released).

The round-trip GRIB test changes result from a change to gribapi that means that it no longer writes out an empty section 2 (user-defined section) by default. This is documented in the [gribapi v1.12.0 changelog](https://software.ecmwf.int/wiki/display/GRIB/GRIB+API+version+1.12.0+released).

In both cases workarounds based on gribapi version have been implemented so that the tests will pass for both versions of gribapi.
Oh hangabout, I only just spotted this... These new values are the same as the values in the unpatched equivalent files. This then might explain why the patch files aren't being generated; the values generated by the test running now never differ from the values in the unpatched result file so the test never "fails" and so the patch files are never generated.

Looks like I need to have a look at the behaviour of `iris.fileformats.grib.hindcast_workaround` and see if its behaviour has changed.