Catch InstanceNotFound exceptions for V2 API deferred delete

Adds handling of InstanceNotFound exceptions in the V2 API
deferred delete and translate them to HTTPNotFound rather
than letting them propagate up causing a traceback in the
nova log.

Co-Authored-By: Michael Still <mikal@stillhq.com>

Change-Id: I3d434f28313ae633bdcb9cef82a7b8b0020b5722
Closes-Bug: 1270803
Catch InstanceNotFound exceptions for V2 API floating_ips

Adds handling of InstanceNotFound exceptions in the V2 API
floating_ips extension and translate them to HTTPNotFound rather
than letting them propogate and causing a traceback in the logs

Co-Authored-By: Michael Still <mikal@stillhq.com>

Change-Id: Idc1a5b2e6b8cb9778d032e5e1fc8112a65fc225c
Closes-Bug: 1271047
Don't attempt to fill faults for instance_list if FlavorNotFound

When getting a list of servers with details, if a FlavorNotFound is
raised from the compute API the local instance_list variable is set to
an empty list, but later instance_list.fill_faults() is called on it
assuming it is an InstanceList object, which will cause an
AttributeError.

This patch just checks to see if instance_list is empty before calling
fill_faults since InstanceList.fill_faults assumes the list is not empty
when called, so it's not trivial to simply create an empty InstanceList
here and set it to the instance_list variable.

The new test cases use testtools.matchers.HasLength and while seeing
if testtools was imported I noticed it (along with mox) was in the
wrong import group, so also fixed the order there.

This patch also fixes the test_get_server_details_empty unit test to
actually call the detail method rather than index.

Closes-Bug: #1296940

Change-Id: I9f85c2a0b70f41e5bba2da05a2339caf2a8efc3e
Merge "Catch InstanceNotFound exceptions for V2 API deferred delete"
Merge "Catch InstanceNotFound exceptions for V2 API floating_ips"
Merge "Don't attempt to fill faults for instance_list if FlavorNotFound"