API: ExtensionDtype Equality and Hashability
Implements a default `__eq__` and `__hash__` for ExtensionDtype. Adds a test ensure that they're defined.

Do people have thoughts on `_metadata`? I've tried to document everywhere the importance of it for parametrized extension dtypes. If you fail to set it correctly and use the default `__eq__` and `__hash__`, you'll end up with bizarre behavior like `Period('D') == Period("M")` being true, and having the same hash.

A more heavyweight alternative is to do some metaclass trickery to inspect `ExtensionDtype.__init__` for parameters and set `_metadata` based on that, but I tend to stay away from metaclasses unless they're absolutely necessary.

Closes https://github.com/pandas-dev/pandas/issues/22476