Added CubeList.merge_cube, with merge failure reasons reporting.

Intended as follow-up to **replace** https://github.com/SciTools/iris/pull/899

Thanks to previous contributors
  * @cpelley (https://github.com/SciTools/iris/pull/784)
  * @rhattersley (https://github.com/rhattersley/iris/compare/SciTools:master...rhattersley:merge-fail)
  * @bblay (https://github.com/SciTools/iris/pull/899)


NOTE: this is not as minimal as it could have been.
There are two significant departures from the original spec:
  * (1) It adds methods in coords.py to enable explanation "why" two Coordinates do not compare.
The driver for this was specific testcases where otherwise we can only report e.g. 'dimension coordinates "zz" are not the same", which I judged to be too unhelpful as comparing these may also not be simple.
  * (2) It reports multiple reasons for failure.
I followed @bblay in this, because it wasn't hard to generalise, and it avoids the reporting the 'wrong' cause in certain cases.
I believe the resulting messages will not be *too* complex, even in the worst cases.