BUG: tslib.tz_convert and tslib.tz_convert_single may output different result in DST

These functions may return different result in case of DST. There seems to be 2 problems:
- ``tslib.tz_convert`` checks DST and change ``deltas`` by adjusting ``pos`` by 1. If input has time-gaps more than 2 DST spans, result will be incorrect.
- ``tslib.tz_convert_single`` results incorrect if input is just on DST edge.

```
import pandas as pd
import numpy as np
import datetime
import pytz

idx = pd.date_range('2014-03-01', '2015-01-10', freq='H')

f = lambda x: pd.tslib.tz_convert_single(x, pd.tslib.maybe_get_tz('US/Eastern'), 'UTC')
result = pd.tslib.tz_convert(idx.asi8, pd.tslib.maybe_get_tz('US/Eastern'), 'UTC')
result_single = np.vectorize(f)(idx.asi8)
result[result != result_single]
# [1394370000000000000 1394373600000000000 1394377200000000000 ...,
#  1414918800000000000 1414922400000000000 1414926000000000000]
```

#### Note
Additionally, it was modifed to close #7880 also.