Deduplicate some INFO and AUDIT level messages

I'm trying to debug a problem where the last thing in the logs is
"Starting instance...".  Unfortunately this occurs twice in the same
source file, so it's hard to figure out a priori which log statement
it came from.  Audit and info messages don't disambiguate their
function/line number, all you get is the logger name like:

2014-04-06 19:51:01.871 8288 AUDIT
  nova.compute.manager [req-...] [instance: ...] Starting instance...

I think it doesn't hurt to to make sure all logs at this level are
unique, even if upstream were to log the function (see [1]).  Most
duplicate LOG.info and LOG.audit level messages are in separate files
so we can disambiguate by the name, but there are a few that overlap.

For reference, the less-then-perfect but useful check I used was:
 $ grep -r 'LOG.audit' * | sed 's/:\s*/ /' | sort -k1 | uniq -f1 -c

[1] https://review.openstack.org/#/c/85638/

Change-Id: If1ff573ffed1d12fcadfbdfd3365aae68a5fb977
Virt: make use of the InstanceInfo object

This ensures that all drivers and the compute manager make use of
the instance info object and do not pass around random dictionaries.

Complete the blueprint instance-info-objects

Change-Id: Idab57d33e8612fcf40f54f73d5f73d813629bddf
Shelve_offload() should give guests a chance to shutdown

Change Iec3dfd17725440958aac395ebc471e51afd6522e added clean_shutdown
support to shelve operations, but ignored shelve_offload as its normally called
either as a second stage to shelve().   However BFV instances call
shelve_offload() directly, so it too should have clean_shutdown support.

Change-Id: Ida612a70ad3b8a7b7b9454579870569c4129ee48
Closes-Bug: 1384637
Partially-Implements: blueprint user-defined-shutdown
GET servers API sorting compute/instance/DB updates

This change is to support updating the v2 and v3 /servers and
/servers/detail APIs to support multiple sort keys and sort directions
(using the 'sort_key' and 'sort_dir' parameters); these parameters can
be specified multiple times to create a list of sort keys and
directions.

Contains the changes that will be used by the REST API layer:
* Compute API updates on the get_all function to support sort keys
  and directions
* InstanceList updates on the get_by_filters function. The new
  'sort_keys' and 'sort_dirs' kwargs are added but the existing
  'sort_key' and 'sort_dir' kwargs must remain for backward
  compatibility.
* DB API has a new 'instance_get_all_by_filters_sort' function that
  supports multiple keys/directions. The existing
  'instance_get_all_by_filters' remains for backward compatibility
  and calls the new sort function with the single sort values
  wrapped in a list.

Note that the defaulting of the sort keys and directions is done in
the dependent patch set in the new 'process_sort_params' function
(invoked in db.sqlalchemy.api); by default, the sort keys are
'created_at' and 'id' in the 'desc' direction.

The REST API changes that consume these updated will be pushed in
another change set.

Change-Id: Iec2bba18c8894302e3ba35af69379ea9c1da04fc
Partially implements: blueprint nova-pagination
Don't make a no-op DB call

drivers_uuid can be empty, but we are still doing a DB call. This is causing
a sqlalchemy SAWarning.

SAWarning: The IN-predicate on "instances.uuid" was invoked with an
empty sequence. This results in a contradiction, which nonetheless can
be expensive to evaluate.  Consider alternative strategies for improved
performance.

Change-Id: Ib8c9b85e84800c9e2ddcdf204851f1b51101926c
Closes-Bug: #1383617
Merge "Don't make a no-op DB call"
Merge "GET servers API sorting compute/instance/DB updates"
Merge "Virt: make use of the InstanceInfo object"
Merge "Deduplicate some INFO and AUDIT level messages"
Merge "Shelve_offload() should give guests a chance to shutdown"