Fix double handling, getting rid of unnecessary precision and trailing zeros.

Fix the handling of doubles so we should never lose any
precision. Since double is the maximum precision we can handle, change
the writer to set the maximum precision to 17, which is exactly the
number of decimal digits required to not lose information when
switching between IEEE 754 doubles and a string encoding.

As a result of this, there's no need to set the flag to require the
decimal point. Additionally, there is no need to remove trailing zeros
since we no longer generate them unnecessarily. All the associated
code is removed, although the flag is still included for
compatibility. A note has been added indicating it no longer has any
effect.

This also affects a number of tests, mostly on the writer where the
output will change to remove unnecessary zeros. Also add a test to
ensure we get double encoding correct for values that have higher
precision than can be represented as a double. Only one reader test
needs updating because it previously tested that the reencoded version
was identical. However, that's no longer the case because the input
JSON had extraneous zeros. We should still parse them properly, so we
preserve the test, but we don't test the reencoded version in that one
case.

Fixes #3.