destutil: if wdp is obsolete, update to the closest non-obsolete ancestor

As the original comments suggest, using prune as a model here was an existing
idea, and now this patch implements it.

I think it would be even better to do what solveobswdp() from evolve does (in
short, it allows to update to a successor of the closest ancestor even if that
ancestor is obsolete), but that is outside of this series' scope.

Differential Revision: https://phab.mercurial-scm.org/D12099
17 jobs for topic/default/wip-head-comp-2 in 62 minutes and 2 seconds (queued for 4 seconds)