errorcall rather than error in do_set
speed up EnsureLocal by avoiding eval
Merge branch '21-misc-cleanup' into 23