walk_object: rewrite as nonrecursive
walk_object: rewrite as nonrecursive

Given a deep enough bup tree the current recursive version can exceed
the default Python stack limit, resulting in an error like this:

  RuntimeError: maximum recursion depth exceeded in cmp

Rewrite the function as an iteration, and explicitly manage the pending
items as a list on the heap.

Thanks to axion for reporting the problem.

Signed-off-by: Rob Browning <1dc5917c2adeeba13d1ef33dbb40691a1b67cc65@defaultvalue.org>
Tested-by: Rob Browning <1dc5917c2adeeba13d1ef33dbb40691a1b67cc65@defaultvalue.org>

ToxicFrog/bup,ToxicFrog/bup,ToxicFrog/bup,ToxicFrog/bup,ToxicFrog/bup