Centralize basic argument validation for procedures

For the built-in procedures (e.g. +, cons) may as have the Procedure
implementation perform validation of the number of arguments. Avoids
having the same basic boilerplate code in most of the procedure
functions.

Tests pass
Add car, cdr procedures; error reporting support
Add all symbol procedures from R7RS 6.5

Tests pass
Implement eqv? equivalence procedure

Tests pass
Provide the binding name as part of the procedure

Some built-in procedures will need to know the name by which they were
invoked, such as caar and friends. It is also useful for error
messages to include the name from the environment, rather than a hard-
coded value.

Tests pass
Implement procedures of CxR library

Tests pass
Implement eq? procedure the same as eqv?

No requirement to make these two procedures different, so treat them
as identical; eq? maps to the same internal function as eqv?.

Tests pass
Sequences now have unique id; starting equals?

Scheme R7RS equals? is intended to handle infinite sequences. This
partial implementation is working toward that goal. Not yet working
on pairs at all, and only just beginning on vectors. Byte vectors are
the easy case, they can only contain unsigned bytes.

Tests pass
Add all boolean procedures from R7RS 6.3

Tests pass
More list procedures

Tests pass
Add map and apply procedures

Tests pass
Parser function rename, streamlined defer

Tests pass
Better self-referencing infinite list support

Parses expressions with datum labels that are self-referential, as in
the following: '#1=(a b . #1#)

Lot of other work in progress.

Tests pass