Changes to function evaluation, other improvements

Before, a function was evaluated, returning some form, and that form was automatically evaluated again. This was incorrect behavior, and does not happen anymore. Only macros are automatically evaluated now.

Changes:
- Forms returned by function calls are no longer automatically evaluated again
- Made infrastructure changes in preparation for implementing syntax-quote
- Added a 'vector' built-in function
- Upgraded 'cons', 'first', and 'rest' to work with vectors
- Fixed a bug - eval'ing a builtin doesn't crash the interpreter anymore
- Changed placeholder calls to fatal() to have more descriptive error messages
- REPL no longer prints out lex and parse results by default