REF: move check for disallowed bool arithmetic ops out of numexpr-related expressions.py
The current `_bool_arith_check` helper function in `expressions.py` does 2 things: 1) check for operations we do not allow in pandas for boolean data (division, power) and 2) check for ops that are not supported by numexpr but have a pure python fallback.

That first aspect is not related to numexpr, though: we always check this (and raise an error if appropriate), whether numexpr is used or not. 

So this PR does:

- Move the check for disallowed bool ops out of the numexpr code to `array_ops.py`. This is a cleaner separation of concerns, and ensures that the check is done consistently (eg if not calling floordiv through numexpr (https://github.com/pandas-dev/pandas/pull/40727), or if in the future not calling expressions.py if we know we can't use numexpr, such as in https://github.com/pandas-dev/pandas/pull/41122)
- In `expressions.py`, move the remaining check for unsupported ops (by numexpr) inside an except block: this way, we don't check up-front (for all ops, for all types), and only do the types check if there was actually a NotImplementedError. That avoids paying the overhead costs for all other ops. 
looks ok, can you rebase as merged the numexpr test updates.