BUG: Fixes and tests for extreme values in all data types

The extreme values of float and double (Stata, pandas eqiv: float 32 and
float64) were not correct.  This resulted in incorrect truncation. The
handling of missing values have been improved and code to convert missing
values in any format has been added.  The improvement differentiated between
valid ranges for data and missing values.

Additional issues were found when handling missing Dates, where missing Dates
(NaT) were converted to non-missing dates when written.

A test has been added for extreme numeric values as well as missing values.