Make git dialogs blocking

1) Add a SparkActionWIthProgressDialog class. This abstracts partially the usage of SparkProgress.
2) Enhance the Job class to return a future, which completes when the job is complete.
3) Make the Git commit dialog blocking.
4) Make the Git checkout dialog blocking
5) Make the git branch dialog blocking

All the git dialogs will be made blocking [in progress].

Fixes #2271 , #2312 , #2261 

@devoncarew  PTAL thanks