Fix change detection logic in conductor

The change detection logic in conductor attempts to determine what
changes an object action had on the object itself in order to
communicate them back to the caller. This logic previously assumed
that if an attribute was present on the updated object that it was
also present on the original. However, that will not be the case
in situations where a method sets a new attribute (such as
instance create, which will set many of them).

This change to the logic avoids triggering a lazy-load of the
attribute on the original object while trying to determine if
it has changed. It corrects behavior and doesn't change the interface
at all, so no RPC version changes are needed.

Related to blueprint unified-object-model

Change-Id: I8b01185ba81f3126f494db95c70c23dfa77ad959
Add ObjectActionFailed exception and make Instance use it

The obj_load_attr() code in Instance slipped through review with
just a "raise Exception()" for the case where the load cannot
complete. This adds a new exception for the case, fixes the
Instance.obj_load_attr() method, and adds a test to verify it.

Related to blueprint compute-api-objects

Change-Id: I73c966deb3c498019370eb83ade64bff2c48aec0
Merge "Fix change detection logic in conductor"
Merge "Add ObjectActionFailed exception and make Instance use it"