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
```

Summary: 
- Added `yearfirst` to `to_datetime`.
  - Defined private func `_to_datetime`, because `DatetimeIndex` uses `freq` kw to parse 6 character monthly strings (and do not want `to_datetime` to accept `freq`)
- `Timestamp` is left as it is (without `dayfirst` and `yearfirst`)

Also, closes #5418.
closes #10537 
