Enable many tests for complex numbers
Add `complex` to `test_numpy.py` and add `complex128` to `test_numeric.py`.  Then fix the many small problems revealed by the test suite.

- [ ] closes #xxxx (Replace xxxx with the GitHub issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [X] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

One of the reasons I made these changes was to get a better understanding of how, in `tests/base/ops.py`, the function `_get_expected_exception` should be written for handling the case of complex numbers.  In this first draft of changes, I didn't really use it, warded off by the comment that "the `self.obj_bar` pattern isn't great in part because it can depend on `op_name` or `dtype`s, but we use it here for backward-compatibility".    I could rewrite the changes so that `BaseArithmenticOpsTests` uses `_get_expected_exception` instead of skipping the tests, but that would also entail lots more work in terms of creating test cases that notice an exception being raised.  I didn't want to do that work speculatively. I don't understand the mypy error messages (which I've never seen before). This is not what I meant to do.  GitHub fooled me again!!