Test 17: compare differences files in addition to # of observations.
Add check that -lower- and -upper- are not both specified.
Allow user to specify string comparison options along with -nostring-.
Major refactoring

Refactor much of -cfout- body (not subroutines):
1. Be conceptually clear and consistent about each varlist local's
definition, using this to implement clearer checks of differing variable
types.
2. Issue warnings only after checking that there are no errors.
3. Return more stored results: r(varlist), r(varonlym), r(difftype),
r(alldiff), r(Nonlym), and r(Nonlyu). The philosophy is that if a
variable or observation is mentioned in a warning, it should be
accessible via a stored result.
4. Do not reload the master dataset after modifying the using: merge
modified master into using.
5. Prepare for option -id()- to take a varlist.
6. Prepare to remove the use of the _cf prefix, using temporary variable
names instead.
Create the differences dataset much more quickly.

The new implementation does not resize the Mata matrices containing the
dataset. For a big dataset on my computer, the new version is running
about 10x faster. It skips the creation entirely if option -saving()- is
not specified. It also does not save Mata globals.

As a side benefit, the ID variable in the differences dataset is now not
uniformly str244.

Further, this version removes the use of the _cf prefix.
Add -saving()- suboptions for differences dataset variable names.
Replace references to "diff. file" with "diff. dataset."
Option -id()- accepts a varlist.
Use value labels and ID metadata from the master data.
-saving(, csv)-: drop value labels and set wide display formats.
Add option -dropdiff-
Add option -nonumeric-
Save master/using values as string iff one of compared varlist is string
Save differences dataset without a data label or _dta characteristics
Add option -nopreserve-