base/json: Match exactly what is asked for

Before we greedily matched anything which was not whitespace. So we'd read in commas after exact matches, for instance "true,".
base/json: Better error message