Improve and simplify fits Section indexing.

Add support for indexing fits Sections with slices with nontrivial (step != 1) slices, with integer arrays, and with boolean arrays.
I'm not sure to be honest.  Might be worth asking on the Numpy mailing list.  

It would be nice if Numpy provided an easier way of mocking its indexing behavior with non-ndarray objects.  I feel like I've done fancy indexing tricks before though with some success.  

I still have a problem with the
```python
ks = np.arange(axis, dtype=int)[key]
```
below.  I don't think creating an array of integers should be necessary, and it is in fact quite expensive.  I feel like there should be some alternative to `xrange` but that understands Numpy indexing.  If there isn't I could implement that.  

Maybe in practice this won't matter much, but it could in some extreme cases.