MANT: more informative errors for 'axis' argument of ufuncs

This follows from the discussion in #5196, and unifies the errors returned by `PyArray_ConvertMultiAxis` in `conversion_utils.c`, with the similar code in `ufunc_object.c` to handle the `axis` parameter to ufunc reduction methods.
Looking at this again, the comment seems out of place. But I now more strongly think that we cannot unconditionally raise a `TypeError`, especially after considering what happens with integer overflows. On my 32 bit numpy I get:

```
>>> np.random.rand(10, 20, 30).sum(axis=(2**32,))
Traceback (most recent call last):
...
OverflowError: 'axis' tuple entries must be integers

>>> np.random.rand(10, 20, 30).sum(axis=2**32)
Traceback (most recent call last):
...
OverflowError: 'axis' must be None, an integer or a tuple of integers
```

Which are anything but informative! 64 bit systems with 4 byte ints could also show a `ValueError`, if the value overflows an `int` but not a `npy_intp`.

The proper thing to do would be to call `PyArray_IntAsInt_ErrMsg` directly, not through `PyArray_IntAsInt`, but since it is not part of the API I am not sure of what is best here: checking the error type and letting `ValueError` and `OverflowError` pass unchanged, and modify the message for other errors feels hacky and fragile, but seems the only other way to correctness.

A more elaborate possibility is to add `PyArray_ConvertMultiAxis` to the API, and adapt it slightly (return `naxes` also) so that it can be used here directly.

Thoughts?