ENH: Infer dtype from non-nulls when pushing to SQL

This infers dtype from non-null values for insertion into SQL database.  See #8778 .  I had to alter @tiagoantao test a bit.

Like @tiagoantao, I skipped writing tests for legacy MySQL. Support for this will be removed soon, right?

As a side note, `lib.infer_dtype` throws an exception for categorical data -- probably shouldn't happen, right?

@jorisvandenbossche 
@jahfet
@tiagoantao
to illustrate:

```
 In [71]: pd.lib.infer_dtype(pd.Series([1,'a']))
Out[71]: 'mixed-integer'
```

You end up at 'integer-mixed' if the first valid value is an int, and the rest are not all ints or floats (https://github.com/pydata/pandas/blob/1382aa3affefa1e3ce1301c09f1cde8b8cfe24ba/pandas/src/inference.pyx#L126)