Make DataFrame.to_string output full content by default
I modeled this off of https://github.com/pandas-dev/pandas/pull/24841. Some alternatives I considered:

* Instead of setting the option_context here, we could wind the param into the depths of the formatter. I tried this, actually, and started finding a number of edge cases and bugs. I realized that the issue only occurs in a pretty narrow case - if the user is explicitly calling to_string - because most of the time, when representing a DataFrame, the user *will* want long strings truncated for readability. So I think the safest way is to do it at the top level without interfering with lower-level formatters.
* Series.to_string() could arguably benefit from the same treatment, although that wasn't mentioned in the original issue (and I have never found the need to use it personally) so I didn't bring that in.

Here's an example on a real dataset showing long columns preserved in a text file produced by to_string():

![Screen Shot 2019-08-20 at 10 21 06 PM](https://user-images.githubusercontent.com/59923/63400279-d3f4ec80-c398-11e9-85cf-380a8981d726.png)

Additional manual testing:

* Main use case- by default, no limits and ignores the display options, but can still override:

```
>>> print(df.to_string())
        A       B
0     NaN     NaN
1 -1.0000     foo
2 -2.1234   foooo
3  3.0000  fooooo
4  4.0000     bar
>>> with option_context('display.max_colwidth', 5):
...     print(df.to_string())
... 
        A       B
0     NaN     NaN
1 -1.0000     foo
2 -2.1234   foooo
3  3.0000  fooooo
4  4.0000     bar
>>> print(df.to_string(max_colwidth=5))
      A     B
0   NaN   NaN
1 -1...   foo
2 -2...  f...
3  3...  f...
4  4...   bar
```

* The string representation of DataFrame **does** still use the display options (so it's only the explicit ```to_string``` that doesn't:

```
>>> with option_context('display.max_colwidth', 5):
...     print(str(df))
... 
      A     B
0   NaN   NaN
1 -1...   foo
2 -2...  f...
3  3...  f...
4  4...   bar
```

* The new parameter validates for None and positive ints, but rejects anything else:

```
>>> print(df.to_string(max_colwidth=-5))
    ...
    raise ValueError(msg)
ValueError: Value must be a nonnegative integer or None
```

- [ ] closes #9784 
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry
