CLN:Better exceptions in common, io/excel & format

* more changes to bare exceptions
* fixup _mut_exclusive to be more expressive
* change interpolate_2d and _maybe_upcast_putmask to assertion errors
  (with pragmas) Potentially need to check whether these are actually
  unreachable in normal code...
* CLN: Add coverage pragmas to already guarded asserts in CSVFormatter
* CLN: io/excel Exceptions - small changes (mostly pragmas and asserts)
Merge pull request #4721 from jtratner/change-bare-exceptions-pt-2

CLN: Improve Exceptions in core/common, io/excel and core/format
ENH:Add raise_with_traceback & use in assertRaises

* Adds `raise_with_traceback` to `pandas.compat`, which handles the
  Python 2/3 syntax differences for raising with traceback.
* Uses `raise_with_traceback` in `assertRaises` and `assertRaisesRegexp`
  so they provide better feedback.

ENH: raise_with_traceback method.
CLN: Better exceptions and tests for core/frame

CLN: test_frame fixups + core/frame improvements

CLN: Big simplification of test_frame

TST: Tests for bad/wrong input + assertions.

TST: Test shape mismatch for dot product.

TST: Test cases for bad input exceptions to to_timestamp

to_timestamp invalid argument tests

TST: test_period: Exception --> ValueError

TST: Add test case for sort_index by column with bad axis

TST: Add test case for bad input: multi-column duplicate sort_index

TST: Add test cases for setitem tests

CLN: dropna - slight cleanup + bad axis testcase

TST: bad input test cases for reorder_levels and sortlevel

TST: Test for no copy=False with multilevel non-slice

TST: test for bad input in insert and set item with list

CLN: Exceptions that shouldn't happen should be assertions (mostly _apply*)

TST: Better error messages for not implemented filter methods.

TST: Cleanup a to_panel test case

CLN/TST: Right Exceptions + remove duplicate tests

A few tests were duplicating the same thing or actually just the same
test, those have been refactored or removed. Many tests were changed to
specify the Exception they were looking for (and also to use the new
`with_statement` format for assertRaises, etc.)

CLN: Make Exceptions more specific

CLN: Harmonize SparseDF and DF Exceptions

ENH: Better error message on frame count with level.

TST: Cleanups/specificity in test_multilevel

CLN: Remove unnecessary _rec_to_dict method

ENH: SparseDF apply now accepts axis='columns'

slight touchup to message in _get_agg_axis