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.

ENH: raise_with_traceback - make traceback optional

Plus add a test case or two

use raise_with_traceback in more places
ENH: SparseDF apply now accepts axis='columns'

slight touchup to message in _get_agg_axis
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