PERF/BUG: improve factorize for datetimetz
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

because `factorize` internally localize datetimetz, it raises when data contains DST boundary.

```
dti = pd.date_range('2016-11-06', freq='H', periods=5, tz='US/Eastern')
dti.factorize()
# AmbiguousTimeError: Cannot infer dst time from Timestamp('2016-11-06 01:00:00'), try using the 'ambiguous' argument
```

Skipped this localization to fix, also it  improves perf.

```
dti = pd.date_range('2011-01-01', freq='H', periods=1000000, tz='Asia/Tokyo')
%timeit dti.factorize()
# on current master
#1 loop, best of 3: 475 ms per loop

# after this PR
#1 loop, best of 3: 262 ms per loop
```

**asv:**

```
   before     after       ratio
  [bb6b5e54] [a2c3370a]
-   22.46ms     9.97ms      0.44  timeseries.datetime_algorithm.time_dti_tz_factorize
SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
```

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13750?src=pr) is 84.56% (diff: 100%)

> Merging [#13750](https://codecov.io/gh/pydata/pandas/pull/13750?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will not change coverage

``` diff
@@             master     #13750   diff @@
==========================================
  Files           141        141          
  Lines         51196      51196          
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
  Hits          43296      43296          
  Misses         7900       7900          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [bb6b5e5...a2c3370](https://codecov.io/gh/pydata/pandas/compare/bb6b5e54edaf046389e8cce28e7cd27ee87f5fcc...a2c3370a51db64ec7ed6fc8c186df744501bdb13?src=pr)
 lgtm.

I _think_ this may solve some of these Ambiguous time issues: https://github.com/pydata/pandas/search?q=cannot+infer+dst&type=Issues&utf8=%E2%9C%93

maybe
 thanks! see my comment above if you have some time.
 yeah, i think we can remove most of `tz_localize(None)` logic from core. 
