Suppress invalid units warnings

Add a context manager to suppress the occasionally very verbose warnings raised when an invalid unit is encountered by the Iris load process. For example, the following warnings messages (including the error from UDUNITS2) would all be suppressed:

```
/../site-packages/iris/fileformats/_pyke_rules/compiled_krb/fc_rules_cf_fc.py:1195: UserWarning: Ignoring netCDF variable 'surface' invalid units 'level'
  warnings.warn(msg.format(msg_name, msg_units))
ut_scale(): NULL factor argument
```

The benefit of this is that more significant warnings may otherwise be lost in the noise, particularly if a dataset has many invalid units and/or cannot be otherwise modified to add valid units.
I must admit I find this test class a little confusing. I'd be tempted to use the scoping rules and define the `generate_generic_warning()` function inside `test_generic_warnings()`. That will avoid the need for a helper and a setup. I'd consider the same for the the other test too. It's a style thing, but it might help with readability.