Fix "numpy scalar * array-like == performance horror"

This pull request fixes #3375. All tests that pass before this change also pass after. (There's a failure that seems unrelated.) The PR also adds a test that asserts that `__array_priority__` gets looked at early enough to make sure no copy is attempted.