Should Pandas adopt a naming convention for its protocol methods
numpy has defined various protocol extensions over the years, and has consistently
named them with an array prefix, and "dunder" notation: 
- `__array__`
- `__array_prepare__`,  `__array_wrap__`, [Subclassing ndarray](http://docs.python.org/doc/numpy/user/basics.subclassing.html)
- `__aray_ufunc__` [NEP13](https://www.numpy.org/neps/nep-0013-ufunc-overrides.html
)
- `__array_function__` [NEP18](https://www.numpy.org/neps/nep-0018-array-function-protocol.html)

pandas has't been as diligent. The one example I've been dealing with, is `_reduce`. Originally an internal Series method (not a protocol), it now dispatches to `_reduce` for subclasses of `ExtensionArray`. https://github.com/pandas-dev/pandas/blob/baa77c33fb71c29acea21ba06adaf426ed4cb561/pandas/core/series.py#L3743-L3745

When reading the code for a new EA project, its hard to pick out that _reduce is actually an override of the parent class, instead of just an internal function written by the EA author. Something like `__pandas_reduce__` would have made this clearer.

Due to inexperience with EA, I lost a bit of time figuring out why `s.sum()` wasn't invoking  the EA implementation I thought it would.

Granted, it's not exactly a protocol. For the forseeable future, this will always be an `ExtensionArray` subclass, rather than a duck typed object. But, for readability,
and while EA is experimental, this might be the right time to clean it up.