Revamp builtin registration

- Builtin dictionaries are not global objects anymore.  Instead they
  are passed to parser and lexer, so that those know what builtins to
  map words to.  This hopefully gets rid of the remaining potential
  problems with static initialization order, and cleans up the
  impacted code quite a bit.