Partially fixes GH8732

In most cases it looks like, we need to iterate over array
and coerce each element. This is so that the appropriate
exception can be raised, or we can deal with nulls.
So the original case of casting ints to strings, has to
work the way it does, unless we change the underlying behaviour.
So when astype(str) is called on ints. Then each element
is first cast as a string then made into a numpy object.
If we relied on numpy it wouldn't cast it to string, just
return it as an object. This breaks existing behaviour.

It is possible to bypass iterating over the array, when we are
coercing to int. Assuming that there are no NaNs and the type
of the array is a numeric.