BUG/PERF: Stata value labels
closes #12014 

This PR fixes a minor bug and introduces some performance enhancements, all related to value label reading in Stata files.  

The bug is that when reading a Stata file incrementally, the value labels will be read even when specifying convert_categoricals=False (this does not happen when reading the entire file at once).

The performance enhancements are:
1. Read key/value information as an ndarray using np.frombuffer rather than as a Python loop.
2. When splitting the value labels at the offsets, we currently pass txt[off[i]:] to null_terminate, which creates many copies of large segments of a potentially large byte array.  I changed it so that
   only the relevant part of the string is copied.

Relating to 2, further performance improvements might be possible since there is no trailing null byte to remove except for the last element of `txt` (thus some of the work in `_null_terminate` is superfluous).

Background:  This is an issue when processing large Stata files with millions of distinct value labels.
