BUG: core: allow scalar type richcompare to call ndarray-subclass methods

This makes the scalar richcmp behave exactly as
"array(self) <op> other". The difference comes in when "other" is an ndarray
subclass, in which case this change allows the subclass to override the
comparison operations via usual Python binop dispatch rules.
BUG: Fix string to int64 conversion on 32-bit platforms

closes gh-4575
Merge pull request #4711 from pv/scalar-richcmp-fix

BUG: core: allow scalar type richcompare to call ndarray-subclass methods
Merge pull request #4712 from juliantaylor/strtoll

BUG: Fix string to uint64 conversion on 32-bit platforms
BUG: reject too large seeds to RandomState

mtrand accepts seeds larger than 32 bit but silently truncates them back
to 32 bit. This can lead to accidentally getting the same random stream
for two different seeds, e.g. 1 and 1 + 2**40.
Merge pull request #4676 from juliantaylor/rand-seed-lim

BUG: reject too large seeds to RandomState
ENH: Add the scipy NumpyVersion class.

The class is in numpy/lib/_version.py and can be used to compare
numpy versions when the version goes to double digits.