virt: use compute.arch constants and validate architectures

Where we have hardcoded architectures, use the compute.arch
constants. Where we get architectures from external systems
or users, validate them against the list of acceptable names.

The Xen hypervisor is reporting 'i686' architecture with the
unusual name 'x86_32' so must be converted to use the normal
name. Upon upgrade the existing data in the compute nodes
table will be upgraded by the periodic refresh of compute
node information.

On the other side, the ImagePropertiesFilter will canonicalize
the architecture it fetches from image metadata, so that
'x86_32' gets remapped to 'i686' during comparison.

Closes-bug: #1348624
Change-Id: I1adfb0a2258a628004aaa28c1ac04c4cf3d3eea6
Merge "virt: use compute.arch constants and validate architectures"