Run build_and_run_instance in a separate greenthread

If we're doing a lot of build operations, we are using a large portion
of the limited rpc worker pool for long periods of time. Since we may wait
on external services (like neutron or glance) during those times, we could
fully deplete that pool.

This patch makes us spawn a new greenthread for that task and return the
rpc worker to the pool. Due to some funkiness with the stack of decorators,
this breaks the inner function out to an object method, which is probably
good anyway, given its size. This also moves the wrap_instance_event
decorator to the inner function so that the start and stop events properly
demarcate the actual task and not just the (now very quick) RPC call.

Change-Id: Ife712c43c5a61424bc68b2f5ab47cefdb46ac168
Closes-Bug: #1372049
(cherry picked from commit 1d8eddb2614de8daaddddd64ad1a8de4c215fe7a)
Merge "Run build_and_run_instance in a separate greenthread" into stable/juno