Implement scaling for Spark clusters

This patch adds support for scaling Spark clusters in the Sahara Spark
plugin. The code had been stripped when the Spark plugin was initially
proposed to simplify the review process, now it has been updated and
bugs have been fixed.

Both scaling up and down is supported.

Documentation will be updated in another patch set.

Partial-implements: blueprint spark-plugin

Change-Id: I2bca33edb1bd6649a1e1f333a32ded0f79127477
Merge "Implement scaling for Spark clusters"