Local PostgreSQL faliures
I'm seeing some local failures on our postgres tests. Not sure if they're real.

```
 pytest pandas/tests/io/test_sql.py -k test_datetime_with_timezone --tb=line
==================================================================== test session starts ====================================================================
platform darwin -- Python 3.6.4, pytest-3.4.1, py-1.5.2, pluggy-0.6.0
rootdir: /Users/taugspurger/sandbox/pandas-ip/pandas, inifile: setup.cfg
plugins: xdist-1.20.1, repeat-0.4.1, forked-0.2, cov-2.5.1, hypothesis-3.44.6
collected 371 items

pandas/tests/io/test_sql.py ssFFss                                                                                                                    [100%]

========================================================================= FAILURES ==========================================================================
pandas/_libs/tslib.pyx:537: ValueError: Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=True
pandas/_libs/tslib.pyx:537: ValueError: Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=True
=================================================================== 365 tests deselected ====================================================================
==================================================== 2 failed, 4 skipped, 365 deselected in 1.32 seconds ====================================================
```

long traceback


<details>

```pytb
___________________________________________________ TestPostgreSQLAlchemyConn.test_datetime_with_timezone ___________________________________________________

arg = array([datetime.datetime(2000, 1, 1, 2, 0, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=-360, name=None)),
       datetime.datetime(2000, 6, 1, 2, 0, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=-300, name=None))],
      dtype=object)
box = True, format = None, name = None, tz = None

    def _convert_listlike(arg, box, format, name=None, tz=tz):

        if isinstance(arg, (list, tuple)):
            arg = np.array(arg, dtype='O')

        # these are shortcutable
        if is_datetime64tz_dtype(arg):
            if not isinstance(arg, DatetimeIndex):
                return DatetimeIndex(arg, tz=tz, name=name)
            if utc:
                arg = arg.tz_convert(None).tz_localize('UTC')
            return arg

        elif is_datetime64_ns_dtype(arg):
            if box and not isinstance(arg, DatetimeIndex):
                try:
                    return DatetimeIndex(arg, tz=tz, name=name)
                except ValueError:
                    pass

            return arg

        elif unit is not None:
            if format is not None:
                raise ValueError("cannot specify both format and unit")
            arg = getattr(arg, 'values', arg)
            result = tslib.array_with_unit_to_datetime(arg, unit,
                                                       errors=errors)
            if box:
                if errors == 'ignore':
                    from pandas import Index
                    return Index(result)

                return DatetimeIndex(result, tz=tz, name=name)
            return result
        elif getattr(arg, 'ndim', 1) > 1:
            raise TypeError('arg must be a string, datetime, list, tuple, '
                            '1-d array, or Series')

        arg = _ensure_object(arg)
        require_iso8601 = False

        if infer_datetime_format and format is None:
            format = _guess_datetime_format_for_array(arg, dayfirst=dayfirst)

        if format is not None:
            # There is a special fast-path for iso8601 formatted
            # datetime strings, so in those cases don't use the inferred
            # format because this path makes process slower in this
            # special case
            format_is_iso8601 = _format_is_iso(format)
            if format_is_iso8601:
                require_iso8601 = not infer_datetime_format
                format = None

        try:
            result = None

            if format is not None:
                # shortcut formatting here
                if format == '%Y%m%d':
                    try:
                        result = _attempt_YYYYMMDD(arg, errors=errors)
                    except:
                        raise ValueError("cannot convert the input to "
                                         "'%Y%m%d' date format")

                # fallback
                if result is None:
                    try:
                        result = array_strptime(arg, format, exact=exact,
                                                errors=errors)
                    except tslib.OutOfBoundsDatetime:
                        if errors == 'raise':
                            raise
                        result = arg
                    except ValueError:
                        # if format was inferred, try falling back
                        # to array_to_datetime - terminate here
                        # for specified formats
                        if not infer_datetime_format:
                            if errors == 'raise':
                                raise
                            result = arg

            if result is None and (format is None or infer_datetime_format):
                result = tslib.array_to_datetime(
                    arg,
                    errors=errors,
                    utc=utc,
                    dayfirst=dayfirst,
                    yearfirst=yearfirst,
                    require_iso8601=require_iso8601
                )

            if is_datetime64_dtype(result) and box:
                result = DatetimeIndex(result, tz=tz, name=name)
            return result

        except ValueError as e:
            try:
>               values, tz = conversion.datetime_to_datetime64(arg)

pandas/core/tools/datetimes.py:377:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   raise ValueError('Array must be all same time zone')
E   ValueError: Array must be all same time zone

pandas/_libs/tslibs/conversion.pyx:174: ValueError

During handling of the above exception, another exception occurred:

self = <pandas.tests.io.test_sql.TestPostgreSQLAlchemyConn object at 0x1a1be07ba8>

    def test_datetime_with_timezone(self):
        # edge case that converts postgresql datetime with time zone types
        # to datetime64[ns,psycopg2.tz.FixedOffsetTimezone..], which is ok
        # but should be more natural, so coerce to datetime64[ns] for now

        def check(col):
            # check that a column is either datetime64[ns]
            # or datetime64[ns, UTC]
            if is_datetime64_dtype(col.dtype):

                # "2000-01-01 00:00:00-08:00" should convert to
                # "2000-01-01 08:00:00"
                assert col[0] == Timestamp('2000-01-01 08:00:00')

                # "2000-06-01 00:00:00-07:00" should convert to
                # "2000-06-01 07:00:00"
                assert col[1] == Timestamp('2000-06-01 07:00:00')

            elif is_datetime64tz_dtype(col.dtype):
                assert str(col.dt.tz) == 'UTC'

                # "2000-01-01 00:00:00-08:00" should convert to
                # "2000-01-01 08:00:00"
                # "2000-06-01 00:00:00-07:00" should convert to
                # "2000-06-01 07:00:00"
                # GH 6415
                expected_data = [Timestamp('2000-01-01 08:00:00', tz='UTC'),
                                 Timestamp('2000-06-01 07:00:00', tz='UTC')]
                expected = Series(expected_data, name=col.name)
                tm.assert_series_equal(col, expected)

            else:
                raise AssertionError("DateCol loaded with incorrect type "
                                     "-> {0}".format(col.dtype))

        # GH11216
        df = pd.read_sql_query("select * from types_test_data", self.conn)
        if not hasattr(df, 'DateColWithTz'):
            pytest.skip("no column with datetime with time zone")

        # this is parsed on Travis (linux), but not on macosx for some reason
        # even with the same versions of psycopg2 & sqlalchemy, possibly a
        # Postgrsql server version difference
        col = df.DateColWithTz
        assert (is_object_dtype(col.dtype) or
                is_datetime64_dtype(col.dtype) or
                is_datetime64tz_dtype(col.dtype))

        df = pd.read_sql_query("select * from types_test_data",
>                              self.conn, parse_dates=['DateColWithTz'])

pandas/tests/io/test_sql.py:1334:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pandas/io/sql.py:314: in read_sql_query
    parse_dates=parse_dates, chunksize=chunksize)
pandas/io/sql.py:1097: in read_query
    parse_dates=parse_dates)
pandas/io/sql.py:141: in _wrap_result
    _parse_date_columns(frame, parse_dates)
pandas/io/sql.py:122: in _parse_date_columns
    data_frame[col_name] = _handle_date_column(df_col, format=fmt)
pandas/io/sql.py:101: in _handle_date_column
    return to_datetime(col, errors='coerce', format=format, utc=utc)
pandas/core/tools/datetimes.py:451: in to_datetime
    values = _convert_listlike(arg._values, True, format)
pandas/core/tools/datetimes.py:380: in _convert_listlike
    raise e
pandas/core/tools/datetimes.py:368: in _convert_listlike
    require_iso8601=require_iso8601
pandas/_libs/tslib.pyx:492: in pandas._libs.tslib.array_to_datetime
    cpdef array_to_datetime(ndarray[object] values, errors='raise',
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

>   raise ValueError('Tz-aware datetime.datetime cannot '
E   ValueError: Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=True

pandas/_libs/tslib.pyx:537: ValueError
```

</details>

If it matters this is postgres 10.3