ENH: Add categorical support for Stata export
Add support for exporting DataFrames containing categorical data.

closes #8633
xref #7621 

Some questions about categoricals:
- Are the underlying data types always ints?
- Can they every be `int64`?

Could also probably use some feedback to simplify the Python2/3 bytes/strings code.

A few small things left to do:
- [x] Test that errors are correctly raised
- [x] Add notes
- [x] Add something to docs
 `categories` usually strings, but can be ints/datetimes/floats, really anything.
`codes` are always ints, can be a size from 8-64 bits (a function of the number of categories)
In theory can be `in64` but for a practial manner you can hold `np.iinfo(np.int32).max` in an `int32` so will never happen.
 @jreback Should be pretty much ready.  

In the end I decided to stringify categoricals and provide a warning to check the Stata file.
 @bashtage otherwise looks good. ping when pushed and green.
 @jreback ready
 minor comment. ping when green.
 @jreback Should be ready
 @jorisvandenbossche  Good idea - I had only been checking that the files are correct in Stata, which is probably more important but cannot be automated. This showed there is a bug in the reader code that doesn't correctly handle missing values.

In general writing and reading it back in isn't that useful since both the writer and reader can agree but still be incorrect (this happened in the past).

So @jreback hold off on this one for a while until I can fix the reader.
 ping when ready 
 @jreback ready
 thanks! this is excellent!
