ENH Read Stata dta file incrementally
This PR adds a get_chunk method to StataReader to allow files to be read incrementally.  This is quite useful when processing large files that can barely fit into memory.

The interface is modeled after the analogous method in TextFileReader.

There are some limitations when incrementally converting categoricals in pre 117 version files.  I have a work-around that involves reading the file through once to get the label information, then re-reading and converting using a new function called convert_categoricals.

In a fair amount of testing, I always get identical results using get_chunk and reading the file completely.

I left the existing data(...) method for reading the complete file intact.  Potentially it could be changed to simply call get_chunk.

A few additional issues:
1. The PR fixes an apparent bug in _stata_elapsed_date_to_datetime_vec, in all three of the nested convert_xxx functions.  In some execution paths, a new Series is created without using the index of the series passed as an argument.  This can cause incorrect NA detection when the result is indexed using bad_locs.
2. A modest performance improvement (~40% for me) is obtained by using partition inside of _null_terminate in place of index/slice operations.
3.  Different date object types may be returned during date conversions, according to the execution path.  These can represent identical dates but test as being different using assert_frame_equal.  So there's a bit of extra care required in some of the tests.
4. It would be easy to add an iterator to read the chunks, but I didn't do that.  You need to call get_chunk directly.
5. Some dtypes may change from chunk-to-chunk.  For example, I believe that pandas promotes integers to floats when there are missing values.  In a chunk with no missing values the dtype would be int, but become float when there are missing values.
6. A comment separate from this PR, the slowest step for reading the big data files I work with is string decoding and truncation (millions of calls to _null_terminate).  Other than the modest gain using partition, I tried and failed to find a good optimization for this.
