support __sizeof__()

reports object sizes, storage needed for strides and dimensions + the data if its owned.
I'm not sure if its really a useful feature but its been requested twice, so why not. Based on patch by @ddasilva
I guess if you want to be really thorough you could check that views have small size and that altering `ndim` with `.resize()` changes size in a sensible way.