ER: give a better error message for hashing indices
Merge pull request #5019 from cpcloud/raise-on-index-hash

ER: give a better error message for hashing indices
CLN: Refactor arithmetic operations to core/ops

* Abstract all arithmetic methods into core/ops
* Normalize arithmetic methods signature (see
  `ops.add_special_arithmetic_methods` and `ops.add_flex_arithmetic_methods`
  for signature).
* Opt-in more arithmetic operations with numexpr (except for
  SparsePanel, which has to opt-out because it doesn't respond to
  `shape`).
* BUG: Fix ``_fill_zeros`` call to work even if TypeError (previously
  was inconsistent).
* Add bind method to core/common
* Add full range of flex arithmetic methods to all NDFrame/ndarray
  PandasObjects (except for SparsePanel pow and mod, which only work for
  scalars)
CLN: Add testing util in core/expressions

Adds a set of testing methods to check that numexpr was actually used
successfully.

Also changes the if hasattr idiom --> getattr.
TST: Flesh out test cases to include all arithmetic ops

* better panel arith test
* TST: refactor test case in series
DOC: Document entire range of arithmetic methods in api.rst

doc fixup
CLN: Refactor core/ops + add Panel to it

Cleanup imports in tests/test_expressions
Add numexpr for both series and panel ops
CLN: Disable numexpr for sparse objects
add a test for commutative addition
CLN: Various fixups + disable r* comparisons b/c test failures.

Disable r* comparisons for now because they cause test failures
Move out com fill zeros (I guess evaluate TypeErrors more frequently
Specifically allow radd in TimeOps for Series