max_columns == 0 incorrectly wraps around for wide dfs
![screenshot from 2014-05-19 22 34 47](https://cloud.githubusercontent.com/assets/832380/3019649/110d4f60-df95-11e3-9bb2-c7c0a281d70e.png)

According to the description of `max_columns`, should switch to "smaller" (at the beginning to info, nowadays to truncate) view when set to zero instead of wrapping around. 

```
display.max_columns: [default: 20] [currently: 0]
: int
        max_rows and max_columns are used in __repr__() methods to decide if
        to_string() or info() is used to render an object to a string.  In case
        python/IPython is running in a terminal this can be set to 0 and pandas
        will correctly auto-detect the width the terminal and swap to a smaller
        format in case all columns would not fit vertically. The IPython notebook,
        IPython qtconsole, or IDLE do not run in a terminal and hence it is not
        possible to do correct auto-detection.
        'None' value means unlimited.
```

Originally introduced here https://github.com/pydata/pandas/pull/453#issuecomment-3047570

Fixed after broken here: https://github.com/pydata/pandas/pull/2881

Behavior change (broken again) here https://github.com/pydata/pandas/pull/5550
