Parser fixes

This fixes two bugs, one of the (in my opinion) serious, one just a neatness issue.

The more serious problem is that given: {"a":"b", "c"}, the "c" is lost (as there is no check that we have finished a key/value pair before closing the object). I reused JSON_PARSE_UNEXPECTED_CHARACTER to avoid introducing a new error class in case people are already parsing and expecting a particular set. Obviously this could be tweaked to another value.

The more minor issue that the checking of rejecting initial comma (like [,1]) is incomplete, as extra commas can sneak in inside nested objects. This is fixed by setting separator=true whenever an object or array is opened.