Run keepalive in a dedicated thread

Periodic tasks are not concurrent, they run one after the other in
a single greenthread so if a periodic tasks take a long time to run
(e.g syncing the power state of the devices) the conductor will miss the
keepalive and will be considered dead even tho it's not. This commit is
adding the keepalive to a dedicated greenthread to avoid such problem.

Partial-Bug: #1308680
Change-Id: Ib4159e55a42f268c75f362180e145e637735c16d
Add parallel_image_downloads option

Updates the Ironic image_cache module so that we
use a new parallel_image_downloads (False by default)
option to control whether images are downloaded
and converted to raw format in parallel.

This option helps resolve IO thrashing issues which
can occur on small seed VMs (or small baremetal nodes)
where parallel image downloads and qemu-img conversions
can cause cryptic deployment failures in ironic-conductor.

Change-Id: Id1a63d22cdfd26e9360fdfd747162f549f95da33
Closes-bug: #1322676
Merge "Run keepalive in a dedicated thread"