APE7 - A plan for NDData

This is ready for review. Comments are solicited until **Friday 14th November** after which a vote will be taken on whether to accept or reject this APE.

(note, this has been renamed to APE7 since there is already an APE6 proposed in #7)
It probably would be more useful if the resulting call is:

test(np.array(nd.data), wcs=...

to support all the possible variants that nd.data may take. If the intent is to have the function return objects of the same type, I bet you this is going to be harder than it looks, and initially I'd argue that the caller be responsible for building new, appropriate objects from a simple ndarray return. For now I think we want to make writing functions as easy as possible for most people.