Fixing #240.

More or less exhaustive testing that all combinations of tokens and whitespace result in tokens with precise position information.  (Some combinations are ignored, because e.g. "check:" + "=" == "check" + ":=", which leads to annoying exceptions to the generic testing loop.  Also, the three-token combinations are commented out for now, just because running so many millions of tests takes too long.)

Additionally, the position information in the default actions of ListCons and KeepOnly has been refined whenever there's at least 1 child.  (There's still a mild ambiguity as to what location to assign to a zero-width production: when such a production appears at the beginning of another rule, it would be good to use the start-position of the rest of the rule; when it appears at the end, it should use the end-position of the rest of the rule.  Since zero-width productions could nest arbitrarily deeply, this isn't easy to solve.  The heuristic being used is, since most zero-width rules in practice are starred or bracketed sub-rules and therefore inlined into their parent productions, if the parent rule is non-empty it will ignore the position of the zero-width child, otherwise it'll use the same potentially-bogus position as its zero-width child.  This may break the well-nesting of positions in the generated parse tree, but this shouldn't be a problem in practice since there are by definition no tokens in the zero-width rules...  I have some vague ideas for a more principled fix to this problem, but it's not worth doing right now.)

Finally, some tokens (CARET and PARENNOSPACE) were not properly trimmed of their surrounding whitespace, which led to overly broad locations.  Moreover, the tokens that end in colons should not have the same regex as normal alphabetic keywords.  And, the regex for describing whitespace after a token should be broadened to include the end of a string or an immediately adjacent comment-start character.  This makes more programs lex, and makes the exhaustive testing above much easier.

As a convenience and counterpart to just-parse,js, I've added just-lex.js, which spits out the token stream with position information.