Coercion of eu_value to double

A first step in making handling of numbers less rigid.
Represent integers as integers within a variant

When parsing a variant, we would parse all numbers as doubles, even if
they were integers.  Now we store them as integers, and defer
coercion to doubles to eu_value_to_double.
Test and fix parsing of JSON documents that only consist of a number
Simplify around eu_variant_peek
eu_variant_assign_integer
Coercion of eu_value to integer
Test that non-number types cannot be converted to numbers
eu_number_t -> double

We'll get a real full-fidelity number representation at some point.  So
be explicit about numbers represented as doubles.