BUG: fix scalar type memory leak

have an explicit tp_free that is different from PyObject_Free which is also the
tp_free of PyBaseObject so python does not COPYSLOT it, instead it takes the
next parent PyInt which has a different allocator.
Also added it for arrays just in case, currently not required as they don't
don't inherit from a python type.
BUG: IRR was returning nan instead of valid negative answer.

This change corrects the following two bugs in numpy.irr:

* When the solution was negative, numpy.irr returned nan instead of the
  correct solution because of the mask applied to the roots. Corrected
  by removing the mask that 0 < res < 1.
* When multiple roots were found, numpy.irr was returning an array of
  all roots rather than a single float. This bug was corrected by
  selecting the single root closest to zero (min(abs(root)).

With these corrections, numpy.irr returns the same result as the
corresponding spreadsheet function in LibreOffice Calc for all test
cases (additional test cases were added to cover cases with multiple
positive and negative roots)
Merge pull request #4248 from juliantaylor/scalar-memleak

BUG: fix scalar type memory leak