Added support for bool array indexing on a cube.

I was surprised to learn that the data manager didn't handle boolean arrays when indexing (obviously numpy does, so when the data is loaded, this type of indexing works).

With this change, you can now do:

```
import iris

fname = iris.sample_data_path('air_temp.pp')
temperature = iris.load_cube(fname)

temperature[temperature.coord('latitude').points > 0]
```

Which before would have needed the data to be loaded to function correctly.

**PLEASE NOTE**: Whilst adding this functionality is a good idea, the Constraints mechanism are still the prefered means to do such a query. My example would be written as ```temperature.extract(iris.Constraint(latitude=lambda v: v>0)))``` which does not rely on the latitude being the first dimension of the cube to extract.