Strange dtype behavior for numeric strings when using to_csv and read_csv
Version 0.25.2

The following code writes out a column containing strings of the numerals 0 to N-1 plus a string 'None', and then reads it back in.
```python
for N in [10,100,1000,10000,100000,1000000]:
    A = pd.DataFrame(list(range(N)) + list(range(N)), columns=['a'])
    A['a'] = A['a'].map(str)
    A.loc[N-1,'a'] = 'None'
    # Test
    A.to_csv('./test.csv', index=False)
    B = pd.read_csv('./test.csv')
    print(len(A['a'].unique()), len(B['a'].unique()))
```
However, the output is
```
11 11
101 101
1001 1001
10001 10001
100001 100001
1000001 1524288
```
_Only_ at the N=1000000 case, the values read back in get cast to a mix of int and string, and a warning is thrown

```
.../interactiveshell.py:3049: DtypeWarning: Columns (0) have mixed types. Specify dtype option on import or set low_memory=False.
  interactivity=interactivity, compiler=compiler, result=result)
```