VM in rescue state must have a restricted set of actions

Right now it is possible to pause, suspend and stop a VM in state RESCUED,
so after the state is changed, it's not possible to trigger unrescue anymore
since the original state is lost.

This patch remove vm_states.RESCUED as valid state from stop,
pause and suspend actions.

The vm_states devref is also updated to reflect this change including the
current reboot flow.( vm_states.RESCUED cannot be rebooted as per
today code)

DocImpact
Closes-Bug: #1319182
Co-Authored-By: Cyril Roelandt <cyril.roelandt@enovance.com>
Change-Id: I531dea5a5499bf93c24bea37850d562134dee281
Fix virt BDM __setattr__ and __getattr__

Previously we would only allow these to work on fields that are found in
the _proxy_as_attr collection of the object and we would unconditionally
raise an AttributeError otherwise.

This behaviour is too restrictive as it prevents us from using mock on
these objects properly, Instead we now delegate back to the parent
class for a more natural behaviour.

Change-Id: I5c221eef8f05c66ac2e2fb4abf645748407462c0
Check instance state before attach/detach interface

Currently there isn't any instance's status checking before
attach/detach interface, It will fail when some status didn't
support it. This patch add checking for it.

This patch allow attach/detach interface for ACTIVE, PAUSED
and STOPPED instance.

* ACTIVE: The interface is hotplug to instance.
* PAUSED: The interface can be hotpluged after instance unpaused.
It's fixed by commit: a868fcedf8e46070cae6aa8e59e61934fa23db1c
* STOPPED: In this status, the instance is destroyed. It just update
the instance configuration with new interface. When the start
instance, the instance will be recreated with new configuration.

Change-Id: I3c038056085be1f655758ed8b6a44bcdbf70cdd5
Closes-bug: #1299333
Merge "Fix virt BDM __setattr__ and __getattr__"
Merge "VM in rescue state must have a restricted set of actions"
Merge "Check instance state before attach/detach interface"