Convert an assert to an exception
Better literal support

- 0b and 0B are binary literal prefixes

- 0o and 0O are new octal literal prefixes, along with plain 0, which
  is still supported.  I.e. 0777 and 0o777 are the same constant

- %b is a new formatting string conversion specifier for binary
  literals

- numeric literals that start with "-" are negative

- format of numeric literals has been clarified in documentation

- parsing of huge hexadecimal strings has been fixed.
  0xffffffffffffffff used to be decoded as 0x7fffffffffffffff by the
  parser.
Add more test for literal values
Use GMP for constants

- Using domains for signed and unsigned numbers is arguably frugal and
  ingenious, but ultimately, the arithmetic code ends up involved, one
  needs to be careful that signed zero compares equal to unsigned one,
  etc.  It's a mess.  GMP makes things a fair bit simpler, and as a
  bonus, we get arbitrary precision, which is a norm in high-level
  languages anyway.

- One thing that goes away with this is the C-like ability to view -1
  as 0xffffffffffffffff.  But maybe you wanted 0xffffffff, and the
  fact that you get the former is because we are 64-bit.  So better to
  address this better.  Python just does e.g. -1 & 0xffff, perhaps
  something along these lines.
Add a new recursion test

- This is special in that "seq" returns many values, so it tests
  whether we can handle forking inside functions.
Add a test for signed literals