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.
TST: Clarify empty fancy index test