Improved literal rules in src/parser/grammar.lisp

* src/parser/grammar.lisp (defrule boolean):
  (decimal-digit-char?): new function; helper for `integer/decimal'
  (hex-digit-char?): new function; helper for `integer/hex'
  (defrule integer/decimal): renamed integer/decimal -> number
  (defrule integer/hex): new rule; parse an integer in hexadecimal
  notation
  (defrule integer): new rule; parse an integer in decimal or
  hexadecimal notation
  (defrule float/decimals): new rule; parse the decimals part of a
  float
  (defrule float): new rule; parse a float
  (defrule/ws literal): new rule; accept boolean, integer float or
  string
  (defrule/locations syntax): use `string/?ws' to parse the value;
  force semicolon at the end
  (defrule/ws option-body): use `defrule/ws': use `literal' instead of
  just `string' or `number'
  (defrule/locations field): use `integer/?ws' instead of `number/?ws'
  (defrule/locations enum-value): likewise