Use LexOptions instead of bool for lexJSON and reorganize the code.

The code in lexer.d has been reorganized so that future changes, such as support for error tokens and different string/number parsing modes can be supported.
Rename JSONToken.Kind.invalid to .none.
Implement LexOptions.noThrow.

This option causes an error token to be emitted instead of throwing a JSONException.
Rename JSONParserNode.Kind.invalid to none.