Get rid of create state in Autoscaling

Avoid storing the state of instances that are currently being created in
the instance group resource itself. Instead, ensure that they are returned
from handle_create() and take advantage of that result being passed back in
to check_active().

Change-Id: Ie2c75eaee620aa0599665168bfb92b345128d392
Clean up metadata refresh unit test

The stack was not being fully created, because the calls to the mock
functions were not present for the second instance.

Change-Id: I894473533eb40133e4c22facbbee749a971cec89
Get rid of create state in Instance

We don't want to store any state in the Instance object, instead take
advantage of the new mechanism whereby the result of handle_create() is
passed to check_active().

This makes the autoscaling code uglier for now (since it must still store
the instance state in the instance), but this will go away if we move to
using co-routines to create resources in parallel.

Change-Id: Ib11c8da22900453eb9713eba5106859c8a09dbe2
Use built-in exception filtering for GreenletExit

Python handles this natively.

Change-Id: I440b87112826f44f4c9c3b4bbdd161d2e202341b
Fix issues with EIP unit test

The resource was not being destroyed correctly, but errors were ignored.
Assert on Resource double-create()

There's no valid case in which we should be creating a resource multiple
times.
Propagate creation errors with exceptions
Mark resources as failed when creation aborted
Propagate deletion errors with exceptions
Add a scheduler module

Utility routines for running co-routine--based tasks.
Make Resource.create() a co-routine

At the moment, we will just run each co-routine to completion, but in
future we can use this to return control to the caller so that resources
may be created in parallel.
Add a TaskGroup task

A TaskGroup can monitor a collection of subtasks.
Use a TaskGroup to simplify autoscaling
Use scheduler for driving autoscaling task

For threads that drive autoscaling events, run them to completion using the
task scheduler, to abstract out the sleeping from the main code.

Change-Id: I9b21404a171d92d6edbc59d3099d3ee34f08e22d
Add a timeout option to the scheduler
Move WaitCondition polling to check_active()

Rather than poll in a loop inside handle_create(), use check_active() to
check the status of the WaitCondition.
Move Volume polling to check_active()

Rather than poll in a loop inside handle_create(), use check_active() to
check the status of the Volume.
Make volume attachment a co-routine
Make volume detatchment a co-routine
Move VolumeAttachment polling to check_active()