dates before 1677-Sep-22
If I do this

```python
index = pd.date_range("1677-09-22","1678-09-22",freq="M")

```
It works as expected and produces a datetime index

However, if I do this:
```python
index = pd.date_range("1677-09-21","1678-09-21",freq="M")

```
I get an OutOfBoundsDatetime exception on the first date.
#### Problem description

I have some data to plot which goes back to the first century CE. This is obviously a problem. 

Full traceback:
`
---------------------------------------------------------------------------
OutOfBoundsDatetime                       Traceback (most recent call last)
<ipython-input-29-6a44823d07cf> in <module>()
----> 1 index = pd.date_range("1677-09-21","1678-09-21",freq="M")

~/.local/lib/python3.6/site-packages/pandas/core/indexes/datetimes.py in date_range(start, end, periods, freq, tz, normalize, name, closed, **kwargs)
   2055     return DatetimeIndex(start=start, end=end, periods=periods,
   2056                          freq=freq, tz=tz, normalize=normalize, name=name,
-> 2057                          closed=closed, **kwargs)
   2058 
   2059 

~/.local/lib/python3.6/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    116                 else:
    117                     kwargs[new_arg_name] = new_arg_value
--> 118             return func(*args, **kwargs)
    119         return wrapper
    120     return _deprecate_kwarg

~/.local/lib/python3.6/site-packages/pandas/core/indexes/datetimes.py in __new__(cls, data, freq, start, end, periods, copy, name, tz, verify_integrity, normalize, closed, ambiguous, dtype, **kwargs)
    322             return cls._generate(start, end, periods, name, freq,
    323                                  tz=tz, normalize=normalize, closed=closed,
--> 324                                  ambiguous=ambiguous)
    325 
    326         if not isinstance(data, (np.ndarray, Index, ABCSeries)):

~/.local/lib/python3.6/site-packages/pandas/core/indexes/datetimes.py in _generate(cls, start, end, periods, name, offset, tz, normalize, ambiguous, closed)
    425 
    426         if start is not None:
--> 427             start = Timestamp(start)
    428 
    429         if end is not None:

pandas/_libs/tslib.pyx in pandas._libs.tslib.Timestamp.__new__()

pandas/_libs/tslib.pyx in pandas._libs.tslib.convert_to_tsobject()

pandas/_libs/tslib.pyx in pandas._libs.tslib.convert_str_to_tsobject()

pandas/_libs/tslib.pyx in pandas._libs.tslib.convert_to_tsobject()

pandas/_libs/tslib.pyx in pandas._libs.tslib.convert_datetime_to_tsobject()

pandas/_libs/tslib.pyx in pandas._libs.tslib._check_dts_bounds()

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1677-09-21 00:00:00`

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.15.0-22-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_GB.UTF-8
LOCALE: en_GB.UTF-8

pandas: 0.22.0
pytest: 3.6.0
pip: 10.0.1
setuptools: 39.0.1
Cython: 0.28.2
numpy: 1.14.3
scipy: 1.1.0
pyarrow: None
xarray: None
IPython: 6.2.1
sphinx: 1.7.4
patsy: 0.5.0
dateutil: 2.7.3
pytz: 2018.3
blosc: None
bottleneck: None
tables: 3.4.3
numexpr: 2.6.5
feather: None
matplotlib: 2.2.2
openpyxl: 2.5.3
xlrd: 1.1.0
xlwt: None
xlsxwriter: None
lxml: 4.2.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.7
pymysql: None
psycopg2: 2.7.4 (dt dec pq3 ext lo64)
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: 0.6.0


</details>
