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
```
I believe the orthogonal bit isn't true. I'd just drop it and check the test coverage (see earlier comments).