Auto promote concatenate.

This PR allows cube concatenation to promote of candidate cube dimensionality to 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()
```