Gio: cast to GLib.IVolume before using the Adapter (bgo#721203)

Since gtk-sharp 2.99.1, the GLib.Drive.Volumes property returns
a typed array of GLib.IVolume (as opposed to GLib.List in older
gio-sharp). This means that it's not needed anymore to use the
VolumeAdapter's API to cast each object of the iterator to this
GInterface. Doing so would return null indeed.

So we now use VolumeAdapter's API only if the element is not
already a GLib.IVolume. With gtk-sharp 2.99.1 this will always
be true (and we already depend on it), but leaving this code
still compatible with gio-sharp will allow us to backport the
fixes to bgo#721203 altogether, as there is some value in them
(i.e. protection against NREs), and keeping the code in sync
avoids merging problems.

Signed-off-by: Andrés G. Aragoneses <knocte@gmail.com>