FIX: Correct Categorical behavior in StataReader

Ensure that category codes have the same order as the underlying Stata data.

xref #8816
yes - anything that isn't in `string_types` will be converted using `str()`.  If someone did something silly (used non-trivial objects) as categories, and the objects didn't have unique, meaningful `str` representation, then there could be loss.  In fact, you could probably do something very silly like use `'1'` and `1` as category labels, since these are different.

This said, my documentation is wrong since it will always cast to string, and only raises a warning.