CLN: match standardized dispatch logic in IntegerArray
Actual logic changes:
- return NotImplemented when operating with DataFrame (instead of raising NotImplementError)
- raise ValueError when operating with mismatched-length listlike

Everything else is just rearranging to use patterns that are more standard around the codebase, leading up to #23853