Added cube method slices_over

Added a new method to `iris.cube.Cube` called `slices_over`. This is very similar to `cube.slices` but has near opposite functionality. So while the slice references in `cube.slices` are references to the dimensions returned in the subcubes, in `cube.slices_over` the slice references are references to the dimensions to be sliced along.

For example:
```python
>>> cube = iris.load(iris.sample_data_path('uk_hires.pp'))[0]
>>> cube
<iris 'Cube' of air_potential_temperature / (K) (time: 3; model_level_number: 7; grid_latitude: 204; grid_longitude: 187)>
>>> res = cube.slices_over('time')
>>> print len(list(res))
3
```
How about:
```python
indices = list(next(self.exp_iter_2d))
# Replace the dimensions that are not iterated over with spanning slices.
indices[2] = indices[3] = slice(None)
```