BUG: Fixed exclusion list

Currently iris test coding standards will perform pep8 checks on files
contained within the build directory and then ignore the results.  This
commit removes this checking entirely and fixes a bug present in
generating the assumed directory for the iris repository from the iris
path (a problem which arises when considering softlink vs real paths).
Ingest MetaRelate generated GRIB/CF mappings.
Experimental regrid.
Unicode tests updated, new reference string files added
Merge pull request #873 from bjlittle/orca_to_atmos

Experimental regrid.
Review actions: comment added, sys module introduced now explicitly removed at contextmgr exit
Added options for fileformats.netcdf.save

Adds new options for saving netCDF files to allow for
custom unlimited dimensions and saving netCDF4 files with
compression.

See discussion in #860.
Changed unlimited dimensions to use coordinate names

Sorry about that!
Fixed failing unit tests
Merge pull request #889 from dkillick/unicode_tests

Unicode tests improvements
User Guide section on time constraints with PartialDateTime and iris.FUTURE.cell_datetime_objects.
Resolve PP save rule bug.
Merge pull request #892 from bjlittle/pp_save_unknown

Resolve PP save rule bug.
Merge pull request #893 from cpelley/pep8_test_build

BUG: Fixed exclusion list
Review actions.
Future context restores state even when interrupted.
Merge pull request #895 from pp-mo/future_fix

Future context restores state even when interrupted.
More revisions per PR discussion
Refactored internals of iris.analysis.maths

The goal here was to reduce redundant code and consolidate functionality, to
facilitate future extensions of iris.analysis operators.

For example, I would like to be able to easily define new cube operations like
`>`, `<`, `>=`, `<=`, `&`, `|`, `^` and `%` that are analogous to the standard
numpy operations.

By putting binary operations that involving broadcasting a cube and another
object together, it should also be easier to extend the cube broadcasting
rules.

This change includes adjusted docstrings to reflect current functionality and
removal of code that wasn't doing anything (as caught by pylint). I also fixed
unary math operations (abs, log, exp, etc.) to actually calculate values in
place when `in_place=True`. None of the public facing API is changed. That
will come next :).

The refactoring did reveal a few places where broadcasting rules differ for no
clear reason between add/subtract and multiply/divide. Arguably, the special
logic for add/subtract broadcasting should also be consolidated into
`_binary_op_common` so that it used for multiply/divide as well. Also, there
is a case for exposing public interfaces to `_math_op_common` and
`_binary_op_common` to facilitate writing new cube operations, just like how
`iris.analaysis.Aggregator` facilitates writing new cube aggregations.
New error handling and associated tests

Per PR discussion.