WIP.
Ignore lifecycle events for non-existent instances

Since event delivery is asynchronous, there's an inherent yet benign race in the
event handler querying the database for a deleted instance.

Fixes bug #1180501.
read-write lock, also remove instance_update from instance_claim's critical
section.
add conf for number of conductor workers

Make it easy to launch a bunch of conductor processes on a host.

Deploying multiple conductor workers per host avoids serialization on database
accesses caused by libmysqlclient.so blocking eventlet's single thread. In an
experiment on a 24-core machine, when creating 20 VMs in parallel, maximum
creation time was reduced by approx. 10s when using 20 conductor processes
vis-a-vis a single conductor process. Profiling showed that all of the savings
came from faster calls into nova.db.sqlalchemy.api.

Note that other options were explored to reduce serialization on database
updates, however these other approaches didn't perform better than the
traditional approach (libmysqlclient.so called by eventlet coroutines) when
tested at scale:

    * Using a pure-python mysql library (pymsql) in place of libmysqlclient.so to
      avoid blocking the eventlet thread. I didn't investigate why this didn't
      improve performance. Presumably the overhead of implementing mysql's
      client protocol in Python vs C accounts for the lack of performance
      improvement.

    * Using dbapi_use_tpool to make libmysqlclient.so calls from a pool of
      native threads to avoid blocking the eventlet thread. Although the
      calls to libmysqlclient.so happened concurrently with the eventlet
      thread's execution, performance wasn't improved because of the overhead
      incurred sending the dbapi result back to calling coroutine.
Better opt_update_usage optimization.
Made trace-viewer better

sort in reverse-chron order
faster server.py if ujson installed
Started working on tracing amqp.