run.py: map images using loop devices for xen guests

There are 2 Xen block device backend implementations exist.
First is a host kernel driver (xen_blkback in Linux) and another
is anti-driver implemented in qemu-dm used by Xen HVM guests.

xl toolset used by run.py selects implementation to use
based of following rules (simplified to avoid non-relevant details):

  1. block device specified as storage - use host kernel driver
  2. file specified as storage - use QEMU anti-driver

while Linux xen_blkback is highly optimized and supports all newly
introduced features, QEMU implementation is rather simple and outdated.

This patch forces xl to use xen_blkback driver by mapping OSv image file
as a loop (block) device.

Write speed and latency measurement results (image on RAM disk):

+++ image file approach (before this patch) +++

misc-bdev-write.so:

109.434 Mb/s
107.822 Mb/s
106.684 Mb/s
102.080 Mb/s
111.211 Mb/s
117.465 Mb/s
107.311 Mb/s
115.834 Mb/s
Wrote 1099.867 MB in 10.03 s = 109.689 Mb/s

misc-bdev-wlatency.so:

Min      50%      90%      99%      99.99%   99.999%  Max     [msec]
---      ---      ---      ---      ------   -------  ---
0.1000   0.1121   0.1079   0.1245   0.1309   0.2199   0.4412

+++ loop device approach (with this patch) +++

misc-bdev-write.so:

OSv v0.05-193-g021dad4
444.600 Mb/s
579.262 Mb/s
547.984 Mb/s
615.998 Mb/s
519.428 Mb/s
535.732 Mb/s
471.388 Mb/s
Wrote 5535.938 MB in 10.40 s = 532.126 Mb/s

misc-bdev-wlatency.so:

Min      50%      90%      99%      99.99%   99.999%  Max     [msec]
---      ---      ---      ---      ------   -------  ---
0.0304   0.0362   0.0341   0.0394   0.0487   0.0781   0.1331

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>