use `git:` schema with in docs for raco pkg install

apparently `github:` URLs are only supported for backwards
compatibility
support `#t` and `#f` literals

in turn, remove `true` and `false` macros

also remove `TRUE` and `FALSE` nullary functions

also, translate the type name `predicate` as `bool` for C++,
and the literal values as `true` and `false`, as is standard

represent constant `predicate` values as boolean Literals in IR,
which makes them recognizable in a fixed way

internally, have a known, fixed `Id` value for `predicate` type
(fixed across instantiations)

this change makes `predicate` more of a built-in type than before,
at the cost of some configurability, but with output that looks
more like C++
set bool literal 'type annos before full-program optimization
use `gensym` rather than `next-gensym` for generating bind values
use next-gensym1 generally for generating bind values

this still allows the "bare", unnumbered symbols to be reserved
look up prelude `predicate` differently

in a way that survives any ID renaming in merge-defs function
insert built-in definition for `predicate`

the Racket language implementation still needs some definition
so that the binding exists, but compiler now uses its own
definition for compilation
the-predicate -> the-predicate-id
always load the magnolisp/prelude module during compilation

this way the definitions need not be built into the compiler

whole-program optimization will still drop unused definitions