BUG: Fix bound checking for Timestamp() with dt64 #4065

To fix the bug, this change adds bounds checking to
_get_datetime64_nanos() for numpy datetimes that aren't already in [ns]
units.

Additionally, it updates _check_dts_bounds() to do the bound check just
based off the pandas_datetimestruct, by comparing to the minimum and
maximum valid pandas_datetimestructs for datetime64[ns].  It is simpler
and more accurate than the previous system.

Also includes a number of small refactors/fixes to deal with new error
cases that didn't exist when invalid datetime64s were just silently
coerced into the valid datetime64[ns] range.
BUG: set_names should not change is_ relationship
Merge pull request #5132 from jtratner/fix-set-names-error

BUG: set_names should not change is_ relationship
BUG: Treat a list/ndarray identically for iloc indexing with list-like (GH5006)
Merge pull request #5134 from jreback/list_index

BUG: Treat a list/ndarray identically for iloc indexing with list-like (GH5006)
ENH: Json support for datetime.time
ENH: json default_handler param
Merge pull request #5137 from Komnomnomnom/json-time-suport

ENH: Json support for datetime.time
Merge branch 'json-default-handler' of https://github.com/Komnomnomnom/pandas into Komnomnomnom-json-default-handler
TST: fillna(values) equiv of replace(np.nan,values)
Merge pull request #5139 from jreback/fillna_string

TST: fillna(values) equiv of replace(np.nan,values)
BUG: MultiIndex.get_level_values() replaces NA by another value (#5074)
Make _na_value a class attribute.
Merge pull request #5090 from goyodiaz/multiindex-nan

BUG: MultiIndex.get_level_values() replaces NA by another value (#5074)
DOC: revised io.rst
Merge branch 'timestamp-object-bounds' of https://github.com/danbirken/pandas into danbirken-timestamp-object-bounds

Conflicts:
	doc/source/release.rst
DOC: timeseries.rst updates