Move time operations for Series into class _TimeOp

* clarify/simplify time arithmetic-specific code into a separate class
* cleanup extraneous `set` and containment checks in branches
* refactor validation checks to separate function
* combine branches and dry out repetitive code
* move convert_to_array out of arith method
* self --> left; other --> right [possibly clearer for future refacotr]
* change handling of DateTimeIndex (no longer need additional return)
* add np1.6 check for integer --> timedelta conversion under the hood
ENH drop_level argument for xs
Merge pull request #4180 from hayd/xs_drop_selected_level

ENH: drop_level argument for xs
Merge pull request #4613 from jtratner/refactor-datetimes

CLN: Refactor series datetime arithmetic
TST: test for GH4633, bool(obj) behavior

BUG: GH4633, rever to GH1073, whereby __nonzero__ always raises for all NDFrame objects
DOC: docs to add detail on gotchas for true value testing
API:  for HDFStore, add the keyword dropna=True to append to change whether ALL nan rows are not written
      to the store (default is True, ALL nan rows are NOT written), also settable
      via the option io.hdf.dropna_table (GH4625)
Merge pull request #4714 from jreback/hdf_nan

API:  for HDFStore, add the keyword dropna=True to append to change whether to write ALL nan rows to the store (GH4625)
API/DOC: in HDFStore, change fmt -> format, change Storer format to Fixed format (just a name change);
         option for format is now fixed(f) or table(t)
API: add io.hdf.default_format option to enable an override to default storage formats in HDFStore
Merge pull request #4715 from jreback/hdf_format

API: change nomeclature in HDFStore to use format=fixed(f) | table(t)
Merge pull request #4657 from jreback/bool

API: GH4633, bool(obj) behavior, raise on __nonzero__ always
API/BUG: a column multi-index will be recreated properly (GH4710)

API: raise on trying to use a multi-index with data_columns on the same axis
Merge pull request #4716 from jreback/hdf_column_mi

API/BUG: a column multi-index will be recreated properly (GH4710)
DOC: Updates to CONTRIBUTING.md
ENH: Better rename/set_names handling for Index

* MultiIndex now responds correctly to ``rename`` (synonym for
  ``set_names``)
* ``set_names`` checks that input is list like.
* Cleaner error message for immutable ops.
* Added in previously missing tests for MultiIndex immutable metadata.
* Altered ``is_list_like`` to check for binary_types as well.
Merge pull request #4718 from jtratner/multiindex-rename

ENH: Better rename/set_names handling for Index
DOC: small clarification in DataFrame docstring
Merge pull request #4723 from jorisvandenbossche/patch-1

DOC: small clarification in DataFrame docstring
CLN: Remove unused and undocumented kind keyword from read_excel

Pops kwarg and warns if you pass it (rather than passing on)