REF: implement _ea_wrap_cython_operation
I've identified some bugs in _cython_operation.  As a preliminary to fixing them, this splits out the EA-handling from the ndarray-handling.  This will also make it easier to keep track of what we need to generalize if we want this to support arbitrary EAs.