Fixed a dangling pointer bug in set_car and set_cdr
also rewrote eval_define so it's easier to read
Implemented set! in bootstrap.c
also tidied up error handling code in the eval section into a single function