(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.
OK. How about 2 descriptions below?
- ``Timestamp`` and ``date_range`` may parse year-only datetime-string incorrectly using today's date, otherwise ``DatetimeIndex`` uses the beginning of the year.
-  ``Timestamp`` and ``date_range`` may raise ``ValueError`` in some types of  datetime-string which ``DatetimeIndex`` can parse.

```
# OK
pd.DatetimeIndex(['2012Q2', '2013'])
# <class 'pandas.tseries.index.DatetimeIndex'>
# [2012-04-01, 2013-01-01]
# Length: 2, Freq: None, Timezone: None

# NG
print(pd.Timestamp('2012'))
# 2012-08-12 00:00:00

pd.Timestamp('2012Q2')
# ValueError: Unable to parse 2012Q2
```