ENH: replace a few small allocations with PyObject_Malloc

It uses a faster small object allocator for sizes smaller than 512 bytes
(256 in python2). This improves nditer construction and scalar
operations by about 10%.

For now only replace high profile encapsulated nditer allocation and
python object (PyArray and gentype) allocations that go over tp_free to
ensure no non-buggy third party application is broken.
Merge pull request #4177 from juliantaylor/objmalloc

ENH: replace a few small allocations with PyObject_Malloc