BUG: use cmath to test complex number equality in pandas._testing
- [x] closes #28235
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Adds `cmath`-based equality testing for complex numeric types (`complex`, `np.complex64` and `np.complex128`) 
Travis failure looks unrelated Green barring unrelated doctest failure:
```
=================================== FAILURES ===================================
_________________ [doctest] pandas.core.reshape.pivot.crosstab _________________
549     Examples
550     --------
551     >>> a = np.array(["foo", "foo", "foo", "foo", "bar", "bar",
552     ...               "bar", "bar", "foo", "foo", "foo"], dtype=object)
553     >>> b = np.array(["one", "one", "one", "two", "one", "one",
554     ...               "one", "two", "two", "two", "one"], dtype=object)
555     >>> c = np.array(["dull", "dull", "shiny", "dull", "dull", "shiny",
556     ...               "shiny", "dull", "shiny", "shiny", "shiny"],
557     ...              dtype=object)
558     >>> pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])
Differences (unified diff with -expected +actual):
    @@ -1,5 +1,6 @@
    -b   one        two
    +Index(['__dummy__'], dtype='object')
    +b    one        two      
     c   dull shiny dull shiny
    -a
    +a                        
     bar    1     2    1     0
     foo    2     2    1     2

/home/runner/work/pandas/pandas/pandas/core/reshape/pivot.py:558: DocTestFailure

``` Thanks @arw2019  Thanks @WillAyd @jreback @jbrockmendel for reviewing!