Remove the StrictBool/TruthyBool distinction

"strict-bool" can easily be replaced with "boxed-boolean" with little to
no overhead. There's also a bit of conceptual load for strict versus
truthy which Vonly seems useful for boolean=?

This is needed because types will be converted from context-dependent
keywords to proper bound values. The current struct/truthy distinction
behaves differently depending if the type is a parameter or return
value which doesn't work well with the bound value model.
Add concept of internal types

Internal types can be still referenced by the runtime and codegen but
aren't exposed to the NFI. Examples of internal types are string-like
(which are a runtime implementation detail) and mutable-var (which is
used to take mutable variables to the GC).

As types are about to be placed in the same namespace as variables and
syntax this helps avoid namespace pollution as well as hiding internal
implementation details.
Fix "R7Rs" typo
Remove "void" pseudo-type from the NFI

Instead of having a "void" type we just omit the return type to indicate
the function doesn't return a value. This seems more Scheme-y and allows
us to remove the "void" position-dependent pseudo-type
Change native types in to bound values

This changes native types from syntatic keywords to full bound values.
This is done for symmetry with (define-record-type) which also binds the
resulting type to a value. Having both intrinsic types and user-defined
types in the same namespace makes it easy to define compound types
containing both instrinsic and user-defined types.
Enclose all instrinsic type names with <>

In R7RS the (define-record-type) example encloses its type name in angle
brackets. This seems to be a good convention to disambiguate types from
other values and reduce namespace pollution
Teach ast.StringLiteral.toString to escape

The SchemeParserSuite unit test wasn't using assertReflexiveParse() so
it wasn't catching the failure of .toString to escape. Make .toString
escape \ => \\ and " => \" which appears to be sufficient
Add llvmir.EscapeIdentifier

This encloses a free-form string in quotes and escapes \ and ". This
should be sufficient to make it a safe LLVM IR identifier.