virt: Refactor drive extension

A future live merge patch will require the ability to send extend
messages for internal drive volumes.  To make this easier, refactor
the code a bit:
 - Introduce a function that selects candidate volumes
 - Introduce a function that chooses whether a volume should be extended
 - getNextVolumeSize should take the current size as a parameter rather
   than assuming it is self.apparentsize
 - Pass volumeID explicitly to the extension functions since it may
   differ from drive.volumeID
 - When validating a resize, only update the drive if the leaf volume
   was extended

Change-Id: I62b0941958618884aea67c7929ae3822a694ff5b
Signed-off-by: Adam Litke <alitke@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/28533
Reviewed-by: Francesco Romani <fromani@redhat.com>
Reviewed-by: Federico Simoncelli <fsimonce@redhat.com>