Add error handling

THe way I have structured things, it is hard for me to check arities,
since I'd need to refer to ThrowsError in the Primitive signature,
making it a Error and Value depend on each other.
Let primitives have error handling, and more primitives & forms

The thing holding me back was that I would need the modules Error and
Values to depend on each other (since a primitive is a value, and can
throw an error, and errors refer to values ..), so I moved the errors
into the Values module to be done with it.

I quite like the definition of boolBinOp. It makes me happy.

Also: added (if ..) and (begin ..)
car, cdr, cons, and eqv?

eqv?, eq?, and equals? are all a bit weird in R5RS, and the book makes
them more so. Leaving them for now.

Not sure why the book has [] as a special case in cons.
Be REPLy
Variables.

Follows the scheme in the book, more or less. I've put the primitives
as an initial env, since I was already looking variables up.