add_nodes() integrated with scheduler

* Updated cluster.add_nodes() to accept an additional parameter,
cloud, for making connections.
* Updated job.add() to call scheduler for add task.

Signed-off-by: Shashank Sahni <shredder12@gmail.com>
Integrated remove_nodes/scale down with scheduler

* Updated scheduler to include remove condition.
* Updated cluster.remove_nodes() to include cloud object as an
additional parameter.
* Updated job.remove() to call scheduler when remove API is called.

Signed-off-by: Shashank Sahni <shredder12@gmail.com>
Fixed quota add/remove mismatch in update_cluster

Fixed scheduler.update_quota() to increase available quota when
nodes are removed or job is deleted and decrease the quota when
nodes are added or job is created.

Signed-off-by: Shashank Sahni <shredder12@gmail.com>