use the jsnums.fromString parser so we can parse more numerical values and get rid of the old number parsing code. We're slightly too permissive, but this is a good start. Also wrap all values in a Constant(v, loc) object