Refactor git interactions

RebaseResource communicates with GitService
which is split up in small reusable operations.
Add simple abstraction over NotificationService

Avoids adding PullRequestKey on each message
Fetch PullRequest from User not Organization
Add catch all Exception maper
Add WebSocket based progress bar
Auto show log on operation failure
Throw exception on failed merge

Abort and return correct status to web app
Add Progress to Push operations
Move Progress category to the left of bar
Moved RepositoryService into GitService

Added Clone progress
Fix notifier message for push
Don't send minor update on every Git Progress update

Git could produce 100000 updates on larger repos.
Only do a minor update per 1000 update to avoid the progress reaching
max within the first second then be stuck.
(Also avoids network traffic)
Add simple Error handling of rebase/push

If calls fail, display error message and suggest manual
rebase required.