PERF: Add cache keyword to to_datetime (#11665)
 - [x] closes #11665
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master -u -- "*.py" | flake8 --diff``
 - [x] whatsnew entry

Added a `cache` keyword to `to_datetime` to speedup parsing of duplicate dates:

Some notes:

1) I defaulted `cache=False` i.e. don't use a cache to parse the dates. Should the default be `True`? 

2) I used `pd.unique()` to identify unique dates, and the current implementation did not accept a tuple of strings (objects). I added `tuple_to_object_array` and patched ` _ensure_arraylike` to fix this.

3) There is currently an included test that fails due to a case when using `to_datetime(..., utc=True)` with a `Series`. I am inclined to believe `In[5]` should have been the existing behavior. Thoughts?

```
In [2]: test_dates = ['20130101 00:00:00'] * 10

In [3]: s = pd.Series(test_dates)

# Same as existing behavior
In [4]: pd.to_datetime(s, utc=True, cache_datetime=False)
Out[4]: 
0   2013-01-01
1   2013-01-01
2   2013-01-01
3   2013-01-01
4   2013-01-01
5   2013-01-01
6   2013-01-01
7   2013-01-01
8   2013-01-01
9   2013-01-01
dtype: datetime64[ns]

In [5]: pd.to_datetime(s, utc=True, cache_datetime=True)
Out[5]: 
0   2013-01-01 00:00:00+00:00
1   2013-01-01 00:00:00+00:00
2   2013-01-01 00:00:00+00:00
3   2013-01-01 00:00:00+00:00
4   2013-01-01 00:00:00+00:00
5   2013-01-01 00:00:00+00:00
6   2013-01-01 00:00:00+00:00
7   2013-01-01 00:00:00+00:00
8   2013-01-01 00:00:00+00:00
9   2013-01-01 00:00:00+00:00
dtype: datetime64[ns, UTC]

```