(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.
I think ``parse_time_string`` was a pseudo-public function (in that it was techincally public, but not doced / used except internally).