Rename "more_guards_after" to "call_done_guarding"

(which has flipped value)
should hopefully be more clear what this is for -- at least
I hope that's what this is for.
Small fix to let random.Random work

Use call_done_guarding to defer the call to setDoneGuarding
until later.  As messy as it is, I guess this was the point of
the more_guards_after passing tha we had.

We'll have some issues with typeCall if the __init__ func wants
to set some guards too, since those will happen after __new__
was already called (too late for guards); we'd have to figure
out how to get __init__ to do all of its guards before calling
__new__.  (This applies even if we try to do it in multiple passes,
since we wouldn't have a "all guards before any mutations" flow.)