Adding support for 'recur' and 'loop'

Changes:
- Added 'loop', allowing for easier iteration
- Added 'recur', usable in functions and loops, which performs recursion without incurring additional stack cost
- Fixed a bug where the literal value bound to a symbol was being automatically evaluated when that symbol was used
- Moved the Eval-related enums to the functions file
- Added a different REPL crashing error function, only to be used for internal errors (actual interpreter bugs)