ENH: Use tp_basicsize, not NPY_SIZEOF_PYARRAYOBJECT, for memory allocation.

This change allows C-API level subtypes of PyArray_Type without forcing the
developer to rewrite the tp_alloc function and only change the amount of
memory allocated.
Merge pull request #2975 from bfroehle/tp_alloc

ENH: Use tp_basicsize, not NPY_SIZEOF_PYARRAYOBJECT, for allocation