transactions: avoid late tear-down (issue641)
We use weak references (ugh) to avoid having to manually delete
transaction references out of each call frame when an exception occurs.
%% Should show unknown
? unknown
removing b
%% Should show unknown and b removed
R b
? unknown
%% Should show a and unknown
a
unknown