PERF: StataReader is slow due to excessive lookups for missing vales

Previous versions of StataReader did not correctly check for missing values.
This was fixed in a previous PR, but these checks had previously been
implemented on a value-by-value basis.  This has now been changed to a
vectorized version that is orders of magnitude faster.

Additionally, a benchmark was added to monitor performance issues in the
future.

Closes #8040
The code, in principle, allows different replacement values as Stata does.  This requires casting to `object` and then string missing-values can be inserted into numeric arrays.  Since there are 27 missing value indicators, these have to be replaced one at a time.