Numpy already has generic "is this an integer" code, cf. `issubdtype` and all that. The logic isn't quite trivial, and there are subtle differences between different ways of implementing this (e.g. `issubdtype`/`issubsctype` says that bools are not integers; python `isinstance` says that they are), and we should be consistent.

So I want to say this should be something like `isinstance_according_to_numpy_type_hierarchy(axes, np.integer)`, but... even though we have like 5 different scalar/dtype checking functions, I can't see one that actually implements this? e.g. `obj2sctype` doesn't return the numpy type of the object itself, it returns whatever type seems to be associated with it, so for ndarray inputs it returns the corresponding scalar type, even though the array object itself is not actually of that type or convertible to that type.

Anyone know what the best way to write this is? Possibly `np.issubsctype(type(axes), np.integer)`?