Low-level write access to UM FieldsFile variants.

This PR intends to be a reasonable first stab at providing the ability to modify/create UM FieldsFile variants.

As a low-level API it does not guarantee that modified/created files are strictly compliant with the official format documentation. However, it does perform a bare minimum of consistency checks/updates for metadata elements which dictate the locations of the various sections within the file, and which would be tedious and error prone to perform "by hand". The elements affected are the start and dimension length elements within the fixed length header, and the LBEGIN and LBNREC elements within the LOOKUP entries.

NB.
 1. No support is provided for packing data. Unless the "N1" digit of `field.lbpack` is zero the file will not be valid.
 2. This PR requires SciTools/iris-test-data#32 to be merged for the tests to pass to without "naughty" modifications to .travis.yml.

 - [ ] Update .travis.yml once test data has been merged.
> os.remove is less obscure

For some reason I always think of `unlink` first, but I don't mind either way.

> Won't the shutil.move() simply overwrite the file?

No, not on Windows. From the `shutil.move()` docs:

> If the destination already exists but is not a directory, it may be overwritten depending on os.rename() semantics.