Introduce a preemptible instances filter scheduler
Introduce a preemptible instances filter scheduler

This change introduces a new FilterScheduler, starting from the original
nova.scheduler.filter_scheduler.FilterScheduler. This new class is able
to schedule normal instances by preempting one or several preemptible
instances if there are not enough resources available for an incoming
request.

In order to do the scheduling of the preemptible and normal instances,
the new FilterScheduler will perform the normal filter phase taking into
account these two states:

 - normal state, when scheduling preemptible instances.
 - partial state, when scheduling a normal instance.

This way, it will be possible to schedule a normal instance even if
there are no resources available (consumed by preemptible instances) in
the filtering phase.

When the filtering phase has finished, the weighing phase will start.
This phase will take into account normal state of the hosts, regardless
of the request being a preemptible or a normal one. This way, it is
possible to implement several weighers that will ensure that the best
node is selected, so that:

 - It will be possible to give priority to hosts without preemptible
   instances (so that no instance needs to be killed since this
   operation will incur in a penalty for the provider)

 - It will be possible to select the node with the preemptible that will
   cost less to be killed.

 - It will be possible to implement more advanced weighers, that will
   take into account priorities, etc. This is however out of the scope
   of this BP.

Once the host is selected via the modified filtering and weighing phase,
the scheduler will check if the host resources are overcommited and if
there are preemptible instances to be terminated. If so, the scheduler
will initiate a new weighing phase, so as to select which preemptible
instances inside that host need to be terminated.

alvarolopez/opie