Fix Instance object issues

1) instance.pci_devices can be None, but code to convert the pci_devices
joined 'column' on a sqlalchemy Instance model bombs when this is true.

2) When sending the Instance object over RPC with a None pci_devices
field, a deserialization error occurs because of not properly accounting
for None.

3) In tests, pci_devices is set for db.instance_create(), but
instance_create() does not support creating the PciDevice models.

4) The Instance object code assumes 'pci_devices' is joined by default
when it is not.  This shows up as a problem in compute tests in later
patchsets of mine that need to convert sqlalchemy Instance models to
Instance objects using INSTANCE_DEFAULT_FIELDS.  It also happens that
'fault' should not be a default field as it is never actually joined.

Related to blueprint compute-api-objects

Change-Id: I16fae96b7b9ba17d339bbd589ecc75465f5f56be
Merge "Fix Instance object issues"