ENH: IO header formatting
 - [x] closes #15536 
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master | flake8 --diff``
 - [x] whatsnew entry

In this branch I changed ``pd.formats.format.DataFrameFormatter._to_str_columns`` which
is used by ``to_latex`` and ``to_string`` to format output nicely.
They support now optional headers for the column titles.
See the appended [example jupyter notebook](https://github.com/pandas-dev/pandas/files/813954/Examples_IO_formatting_issue15536.txt).

``to_html`` does not use ``pd.formats.format.DataFrameFormatter._to_str_columns`` and remains an issue.

Test cases were created.