better test error messages
a digit is required after a dot
a digit is required in the exponent
allow all valid json whitespace

JSON defines "insignificant whitespace" as the four
characters: space, horizontal tab, new line, and
carriage return. See RFC 4627 section 2.
correctly set parent pointers

Each container type (array or object) should use itself
as the parent for its elements. Using the container's
parent resulted in all nil parent pointers.