Different operating systems have different names for architectures.
eg x86_64 x64, amd64. This can cause inconsistency in libvirt code
dealing with architectures. To deal with this define an enum for
valid architectures and a canonical string mapping. Update all
code internally to use the enum instead of 'char *' for arch
data.