WIP: EA SetArray
This is very WIP, but might IMO be helpful in figuring out the EA interfaces, since it has some other requirements than the EAs so far. It makes some way towards #4480 and might be a basis for #21547, where the comments were effectively "make this an EA", e.g. @jreback:
> EA is an extension array & a dtype, both of which are first class. That's how I'd like to see sets (and lists and dicts)

The code works so far, and tests pass, but there's a large amount of issues (and probably some conflicts with some other current EA-PRs). As a disclaimer, in each case it may well be that I'm misunderstanding something, but I've tried my best, and the same issues would probably be encountered by other EA authors.

* several methods, including `fillna` and `astype` do not dispatch to the EA impl
* same for `df.fillna` not dispatching to Series
* `set` is a case, where the nan-value is *incompatible* with the dtype in normal operations (i.e. `{1} | np.nan` raises). This means that tests like `TestMethods.test_combine_add` and `TestMethods.test_combine_le` will always fail on missing data
* Bool ops had no dispatching mechanism. I added one, but can probably be improved.  These are also not tested as far as I can tell.
* Bool ops in particular will have to figure out a contract which side is cast to what, e.g. if `op(EA, np.ndarray)` is the same as `op(np.ndarray, EA)`, or if the latter downcasts EA.
* `data[-1` must be non-na for `BaseGetitemTests.test_take`
* found `tests/extension/conftest.py` too late, will need to adapt my fixtures
* I'm sure my changes to `pandas/tests/extension/base/ops.py` will cause friction, but those are just WIP as well. In any case, `tests` like `BaseComparisonOpsTests.test_compare_array` can never suceed with comparing `0` to a non-numeric dtype (and I wrapped it into a `Series` since I was getting errors with the dispatch as a list object)

If/when this is ever merged, I'd like add more options to `.astype('set')` (example in #4480), and add a set accessor for other methods (again #4480).