ENH: Make memmaps return arrays in ufuncs and fancy indexing

A long while back when there was some discussion about memmaps, I wondered if this would not make sense... So putting it in a pull request. Of course if someone out there tries to access `_mmap` even though it does not actually have that attribute any more, that would result in an array like that, but I remember finding it annoying that `memmap + 1` would print as `memmap` all the time...

This makes memmeps return an array instead of a memmap instance
for fancy indexing or ufuncs, etc. that use __array_wrap__ and
__array_prepare__. The type is preserved for subclasses however.
Also copy is one example that still returns a memmap even if it
does not point to the same memory.