BUG: fix random.choice scalar object result and disallow 0-d arrays

Object arrays failed due to bad check for finding out if the result should
be a scalar type and not an array when size=None. Also in this case the
creation of the new array was wrong. This should be fixed with this.

The second fix is to forbid 0-d arrays. Allowing 0-d arrays does not
make much sense. But it is dangerous because for example floats will
be interpreted as 1-d arrays, while one may expect that they are interpreted
as integers. This also saves the trouble of reliably detecting all integers...
BUG: PyArray_LexSort allocates too much temporary memory.

PyArray_LexSort was allocating memory to hold actual PyArrayObject's
and PyArrayIterObject's, but only storing pointers to such objects
in the array.
MAINT: random.choice python 2.4 compatibility changes
MAINT: Regenerate mtrand.c
Merge pull request #3124 from njsmith/backport-2976

BUG: PyArray_LexSort allocates too much temporary memory.
BUG: Exported f2py_size symbol prevents linking multiple f2py modules.
Merge pull request #3131 from charris/backport-365

BUG: Exported f2py_size symbol prevents linking multiple f2py modules.
Merge pull request #3117 from seberg/backport-choice-object-scalar

Backport gh-2992