ENH: Cast non-object arrays to float in np.poly

Closes #5096. Casts integer arrays to np.double, to prevent
integer overflow. Object arrays are left unchanged, to allow
use of arbitrary precision objects.
There are way too many of those: I am pretty sure if I rewrote this same code 10 times from scratch, I would not use the same function all the time...