Add boolean literal values support

those are:
      #t or #T for true
      #f or #F for false
add named-let support

modified functions:
  * let

now takes:
    (vars . body)
  or
    (name vars . body)

as the good-book says, <<EOF
A recursive procedure defined using letrec can describe loops. Let's
say we want to display a countdown from 10:

(letrec ((countdown (lambda (i)
                      (if (= i 0) 'liftoff
                          (begin
                            (display i)
                            (newline)
                            (countdown (- i 1)))))))
  (countdown 10))
This outputs on the console the numbers 10 down to 1, and returns the
                      result liftoff.

Scheme allows a variant of let called named let to write this kind of
loop more compactly:

(let countdown ((i 10))
  (if (= i 0) 'liftoff
      (begin
        (display i)
        (newline)
        (countdown (- i 1)))))

EOF
(source teach-yourself-a-scheme-in-fixnum-days)
new functions `set-c{a,d}r`, `type-of`, `reverse` and `null?`

new built-in functions:
    * set-car!  [BM]
    * set-car!  [BM]
    * type-of   [BF]
    * reverse   [UF]
    * null?     [UF]