Changed the main data return type to include one union field for every data type

The field names now reflect the specific data type. This should make it easier
for code which wants to use this data. It avoids the need for casts and makes
the code a little more self-documenting.

I also added a test for signed 32-bit ints to the data types tests and removed
some possibly broken uses of cmp_ok(). The cmp_ok() function uses "int" as its
type, and I don't know how well that will work across platforms. when given
64-bit ints, 32-bit unsigned ints, etc.