add gensym builtin function, fix defmacro bug