(WIP) API/BUG: Make consistent datetime string parse function

### Original Description
Allows ``DatetimeIndex.__init__`` to accept ``NaT`` string representation.

### Updated Description
The original problem is caused by the inconsistencies in parsing function. Make following results to be consistent.
```
date_str = '2011Q3'
pd.tseries.tools.parse_time_string(date_str)[0]
# 2011-07-01 00:00:00

pd.DatetimeIndex([date_str])[0]
# 2011-07-01 00:00:00

pd.tseries.tools.to_datetime(date_str)
# 2011Q3 <type str>, not parsed

pd.Timestamp(date_str)
# ValueError: Unable to parse 2011Q3
```
It also closes #6961.
But the `_str_to_dt_array` function that you replaced with `to_datetime`, this had the `freq` keyword (and you still provide it to `to_datetime` at the moment), wasn't it of use then?