compiler: Implement (let-syntax)

This is a purely frontend implementation that reuses nearly all of the
(define-syntax) mechanism
stdlib: Reformat Scheme libraries with Vim

Use Vim to bulk re-indent all Scheme libraries using spaces. The current
indentations was inconsistent and fiddly.
stdlib: Use (case) definition from R7RS errata

From the erratum:
"The syntax-rules definition of case is incorrect; the fourth syntax rule
must be moved after the fifth to avoid an improper match against the
fourth rule when => is present"
stdlib: Implement letrec*

R7RS has a macro definition for (letrec*) that assigns locations a
special "uninitialized" value and then implements multiple body
(define)s in terms of (letrec*)

We take the opposite approach of handling multiple body (define)s in
the compiler frontend and then uses a macro to implement (letrec*) in
terms of body defines. The result should be equivalent.
stdlib: Partially implement (letrec)

Implement (letrec) as a simple alias for (letrec*)

This isn't quite right.  It's legal to refer to values earlier in the
initializer list in (letrec*) but not in (letrec) This means all valid
(letrec) initializers are valid (letrec*) initializers but not the
converse.  We should be more strict with invalid (letrec) uses in the
future