a given delay element requires passing over 3 tries: the subgoal (de when called), answer (de after answer unif),
and delay tries (used to keep variables in delay elements straight). This is complicated by the fact that a delay
list contains several delay elements so their variable bindings need to be shared in a binding accumulator. This
accumulator must be refreshed for each delay_list for a given answer.
All this leads to considerable complications, where an array of bindings is maintained for a given delay element,
while these bindings are maintained in an accumulator. The original code juggled these arrays in a manner that
caused memory errors, so to get around this I wrote code to perform explicit copies, and made the bindings from the
delay trie load directly into the accumulator.
All this required a bit of code refactoring, and I also renamed some variables, as it the old names made things much
harder to follow than it would have been otherwise.