Spark Jobs now return a status

Make Jobs return status

-  The `SparkJobStatus` will contain the information whether a job was successful or failed.
- In case the job failed it will hold the underlining exception as `SparkException`. 
- Any exception that job does not catch will be thrown by job manager with `[SEVERE]` priority.
- This will allow the caller to show appropriate success / error dialogs.

@devoncarew 
Will exception now come through two ways? One perhaps through the Future.catchError() and one through Future.then(), with a status result that contains an exception? That could lead to a code dup for clients. Here I think we expecting the exceptions through catchError, but I believe they are returned in the `then`.