TYP: Update type hints for ExtensionArray and ExtensionDtype
Modifications to reduce error reports from `pyright --verifytypes` related to `ExtensionArray` and `ExtensionDtype`.

Some notes:
1. Had to use `Any` in a number of places, because an `ExtensionArray` can contain any type
2. Because `numpy` doesn't have a released version with types, `pyright` complains whenever we work with `numpy` types, so for type checking purposes, I redefine `np.dtype` and `np.ndarray` to a dummy type.  When `numpy` 1.20 is released, we can most likely remove that.  Alternatively, I can find out if there is a way to see if `pyright` has something like `TYPE_CHECKING` to bracket those changes.

I anticipate these changes might be controversial, so constructive criticism is welcome!
