clean up do_set, including fixing lack of protection bug when lhs is a symbol
Merge branch '31-cleanup' into 33