[WIP] first steps into using the GitHelper

                    
|Q            |A   |
|---          |--- |
|Fixed Tickets|#332|
|License      |MIT |
                    

This the first PR to improve the git execution.

Commands only use the GitHelper and no longer execute git directly. 

And this PR brings some small additions as well :blush:

- pull-request:squash preserves the original first-commit message
- pull-request:switch-base creates a new PR with (only when the adapter does not support switching) and
  preserves the orginal subject and description.
 Sent using [Gush](https://github.com/gushphp/gush)

TODO:
- [ ] Update tests
- [ ] Check if all git executions are done using GitHelper
- [ ] Remove duplication
   - [ ] use guards for checking working-tree.
- [ ] Always restore to original branch on error
I looked at GitElephant, but there are still a few things missing (including Windows support).

This is just the first step into using an interface for git executions, in the future we can start using a 3rd party library to help us ;)