snapshot: virsh fallback for snapshot-list --descendants --from
snapshot: virsh fallback for snapshot-list --descendants --from

Given a list of snapshots and their parents, finding all descendants
requires a hairy traversal.  This code is O(n^3); it could maybe be
made to scale O(n^2) with the use of a hash table, but that costs more
memory.  Hopefully there aren't too many people with a hierarchy
so large as to approach REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX (1024).

* tools/virsh.c (cmdSnapshotList): Add final fallback.

shugaoye/libvirt,cbosdo/libvirt,jardasgit/libvirt,jfehlig/libvirt,zippy2/libvirt,emaste/libvirt,zippy2/libvirt,novel/fbsd-libvirt,zhlcindy/libvirt-1.1.4-maintain,shugaoye/libvirt,jeckersb/libvirt,olafhering/libvirt,jfehlig/libvirt,libvirt/libvirt,agx/libvirt,jfehlig/libvirt,crobinso/libvirt,rlaager/libvirt,elmarco/libvirt,bjzhang/libvirt,datto/libvirt,VenkatDatta/libvirt,novel/fbsd-libvirt,taget/libvirt,wiedi/libvirt,olafhering/libvirt,nertpinx/libvirt,novel/fbsd-libvirt,zhlcindy/libvirt-1.1.4-maintain,usc-isi/libvirt,jeckersb/libvirt,rmarwaha/libvirt1,eskultety/libvirt,libvirt/libvirt,andreabolognani/libvirt,iam-TJ/libvirt,foomango/libvirt,fabianfreyer/libvirt,dumbbell/libvirt,danwent/libvirt-ovs,agx/libvirt,wiedi/libvirt,jeckersb/libvirt,novel/fbsd-libvirt,VenkatDatta/libvirt,VenkatDatta/libvirt,leilihh/libvirt,danwent/libvirt-ovs,VenkatDatta/libvirt,rmarwaha/libvirt,foomango/libvirt,dumbbell/libvirt,soulxu/libvirt-xuhj,emaste/libvirt,novel/fbsd-libvirt,trainstack/libvirt,agx/libvirt,emaste/libvirt,soulxu/libvirt-xuhj,andreabolognani/libvirt,andreabolognani/libvirt,rmarwaha/libvirt,trainstack/libvirt,rlaager/libvirt,leilihh/libvirt,warewolf/libvirt,jeckersb/libvirt,dumbbell/libvirt,fabianfreyer/libvirt,eskultety/libvirt,andreabolognani/libvirt,novel/fbsd-libvirt,cbosdo/libvirt,leilihh/libvirt,bjzhang/libvirt,rlaager/libvirt,zhlcindy/libvirt-1.1.4-maintain,soulxu/libvirt-xuhj,shugaoye/libvirt,emaste/libvirt,iam-TJ/libvirt,rlaager/libvirt,rmarwaha/libvirt,emaste/libvirt,agx/libvirt,danwent/libvirt-ovs,taget/libvirt,nertpinx/libvirt,bjzhang/libvirt,warewolf/libvirt,trainstack/libvirt,usc-isi/libvirt,rmarwaha/libvirt1,zippy2/libvirt,iam-TJ/libvirt,wiedi/libvirt,taget/libvirt,jardasgit/libvirt,usc-isi/libvirt,zhlcindy/libvirt-1.1.4-maintain,datto/libvirt,iam-TJ/libvirt,nertpinx/libvirt,leilihh/libvirt,siboulet/libvirt-openvz,fabianfreyer/libvirt,warewolf/libvirt,cbosdo/libvirt,wiedi/libvirt,taget/libvirt,rmarwaha/libvirt1,elmarco/libvirt,fabianfreyer/libvirt,leilihh/libvirt,libvirt/libvirt,foomango/libvirt,elmarco/libvirt,iam-TJ/libvirt,siboulet/libvirt-openvz,datto/libvirt,datto/libvirt,rmarwaha/libvirt1,siboulet/libvirt-openvz,crobinso/libvirt,eskultety/libvirt,taget/libvirt,usc-isi/libvirt,dumbbell/libvirt,trainstack/libvirt,rmarwaha/libvirt,warewolf/libvirt,dumbbell/libvirt,nertpinx/libvirt,rmarwaha/libvirt,wiedi/libvirt,bjzhang/libvirt,fabianfreyer/libvirt,jardasgit/libvirt,jeckersb/libvirt,nertpinx/libvirt,bjzhang/libvirt,foomango/libvirt,warewolf/libvirt,emaste/libvirt,warewolf/libvirt,crobinso/libvirt,trainstack/libvirt,rmarwaha/libvirt,VenkatDatta/libvirt,danwent/libvirt-ovs,novel/fbsd-libvirt,andreabolognani/libvirt,iam-TJ/libvirt,dumbbell/libvirt,datto/libvirt,jardasgit/libvirt,danwent/libvirt-ovs,leilihh/libvirt,zhlcindy/libvirt-1.1.4-maintain,olafhering/libvirt,trainstack/libvirt,soulxu/libvirt-xuhj,eskultety/libvirt,rlaager/libvirt,cbosdo/libvirt,iam-TJ/libvirt,siboulet/libvirt-openvz,jeckersb/libvirt,jeckersb/libvirt,elmarco/libvirt,wiedi/libvirt,shugaoye/libvirt,emaste/libvirt,cbosdo/libvirt,wiedi/libvirt,jfehlig/libvirt,libvirt/libvirt,foomango/libvirt,warewolf/libvirt,novel/fbsd-libvirt,rmarwaha/libvirt1,zippy2/libvirt,novel/fbsd-libvirt,rmarwaha/libvirt1,siboulet/libvirt-openvz,usc-isi/libvirt,eskultety/libvirt,crobinso/libvirt,jardasgit/libvirt,elmarco/libvirt,agx/libvirt,shugaoye/libvirt,soulxu/libvirt-xuhj,trainstack/libvirt,olafhering/libvirt