(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.
It was always unclear whether this was a bug or a "feature" (that said, I'd always disliked it).

IMO this should go into some more detail perhaps with old and new example, this is an API change and unclear whether anyone is relying on it e.g. to create a range from today to a year ago. I think it's even worth saying how you might go about rewriting the old behaviour...

Something like `pd.Timestamp.now() - pd.offset.YearOffset(1)` Note: that doesn't work, so not that!