ubik: Abstract common code in ContactQuorum* functions
These functions are mostly identical except for the arguments and the
called operation. Move as much common code as possible to an iterator
function and a return code check function. The DISK_WriteV case is
treated a bit differently since it can fall back to using DISK_Write.
This reduces code duplication and shoud simplify maintenance and
future changes. There should be no functional changes.