Make virt drivers use a consistent hostname

Right now, the virt drivers will happily return the hostname
of a system, even if it has changed since the compute service has
started. The problem with this is that DNS issues can cause the
service to constantly delete and re-create itself in the database
leading to flaky scheduling without the operator knowing.

This patch makes them cache the hostname at the first call, and
log a visible error message if the hostname changes during the
lifetime of the process so that the admin can see what is
going on.

NOTE: This excludes hyperv and vmwareapi until further study of
if this is appropriate to do for those drivers as well, as they
can manage multiple systems behind a single compute host.

(cherry-picked from commit 277c07b605d606a6787935d86cf6a749ed92aec0)

Closes-bug: 1224982
Change-Id: I4ef64f9715ff117f50120846d8b43ee7183a0b42