MRG: implement slicing directly on images on disk

These commits implement a relatively optimized way of getting a slice of an
array that is not lyet loaded into memory, but is still on disk.

The obvious use is to allow slicing of e.g. nifti images that have not yet been
loaded.  For example, it is reasonably fast to load one or several volumes
(slicing on the last dimension) using these routines.