[2.7.0] Added Spark in Workflow: CDAP-465

Jira Issue : CDAP-465

1. This PR adds Spark in our Workflow in a similar way as we run MapReduce. This does add some code duplication as our Workflow is not generic to ProgramTypes at this point. This issue required a rework on Workflow which will be done by @sagarkapare. (Discussion with @nitinmotgi and @prinam)

2. For the unit test I have added Spark in WorkflowTest this make sure that we can run Spark from a Workflow and also that different program (in this case MapReduce) can also be a part of the same workflow. I removed the CustomAction and moved its responsibility to Spark as it appeared that it was not doing anything there other than adding one more thing in Workflow and testing MapReduce run success.

3. Now SparkPageRank example runs the spark program as a part of Workflow. 

Build is running here: https://builds.cask.co/browse/CDAP-DUT338-3
This is super ugly. We want to get rid of this for mapreduce. Instead of having programs inside the scope of a workflow, we want all programs at the app level, and the workflow refers to them by name. https://issues.cask.co/browse/CDAP-545. Can we address that first, and then add Spark the right way? Instead of duplicating the existing map/reduce flaw for spark.