EHN encoding parameter for to_latex
closes #7061 

I'm working on solving issue #7061: currently, with Python 2 it is not possible to use `.to_latex()` when the dataframe contains utf-8 strings. This PR adds an `encoding` parameter to make it possible.

The work is not completely done though, and I'm making this PR to start a discussion here. In its current state, the PR quickly fixes the issue and provides tests, so it is kind of a minimal PR.

@jreback in the discussion on issue #7061, you made the following suggestion:

> you _may_ want to add a `LatexFormatter` (as a sub-class of `DataFrameFormatter`) as this will allow some re-factoring to be internally done later on. 

I would be glad to work in that direction, but I'm a bit confused by the current organization of the code. This `LatexFormatter` would seem to me to be similar to `HTMLFormatter`, which inherits from `TableFormatter` (exactly as `DataFrameFormatter`). In that case, `DataFrameFormatter` would use `LatexFormatter` for `.to_latex()` exactly as it uses `HTMLFormatter` for `.to_html()`.  Is that what you had in mind?

@nbonnotte what I mean is that I think a `LatexFormatter` be created in `format.py` which is _like_ `HTMLFormatter` (its a sub-class of `TableFormatter`). So you don't have all of the latex formatting code living in `to_latex` itself (which instead just instantiates a class and calls `.write_result`, similarly to `to_html`).

This will allow easier refactoring later.
 BTW, this does not solves the missing `decimal` parameter I mentioned in the discussion of issue #7061
 @nbonnotte what was the `decimal` issue? (can't seem to find it in that issue)
 I just meant the `decimal` parameter is still lacking, I didn't add it. I should do another PR to do that.
 @nbonnotte create another issue for the `decimal` parameter (we are going to close #7061) with this PR
 comments, ping when green.
 I've created another issue for `decimal` (#12031)

Working on the docstring, I realized there was something odd: I was initializing `LatexFormatter` with a `DataFrameFormatter` and a variable `strcols` containing the result of `DataFrameFormatter._to_str_columns`.

I think it is simpler if the parameter `strcols` is removed and the call to `DataFrameFormatter._to_str_columns` is performed in `LatexFormatter`. You can see in the 2nd commit the changes (dc425cb0e959ccab2941cab27f329ec41cb768d7).

There is still one thing that bothers me: now I'm calling a "private" method (`_to_str_columns`) from outside (that is, from `LatexFormatter`). Is that a problem?
 @nbonnotte no that's ok
 I've squashed my commits then.

All green!
 pls `git diff master | flake8 --diff`
 @jreback should be good now ^^
 merged via https://github.com/pydata/pandas/commit/3a832dfda9b56c16085679bccec230de67f71ce5

thanks!
