Auto promote concatenate.

This PR allows cube concatenation to promote candidate cube dimensionality in an attempt to match that of the proto-cube.

For example, given a 3D time-series, this PR will successfully concatenate the following:

```
iris.cube.CubeList([cube[-1], cube[1:-1], cube[0]]).concatenate_cube()
```

This PR replaces #1434, as it targets upstream/master rather than v1.7.x.