STY: Use PyArray_BYTES to get char*
MAINT: Error type fixup and clearer error message

The first error types were changed to ValueError (or introduced)
newly. Python seems to normally use IndexError or TypeError here,
so changing back to IndexError.

The second is just a clarification to say when the error actually
occurs for the user.