Refactor the tearDown() method in TestRebase

Fetch the remote first and check for a source_branch and a target_branch on
the remote before deleting them
Refactor upstream remote renaming logic in sandbox
Add failing test for scc rebase --remote
Update Rebase Command to inherit from GitRepoCommand

- Initialize repository with init_main_repo()
- Set shallow argument to True and reset argument to False by default
- Update Rebase.rebase() to use self.main_repo
Reuse low-level list_remote() method in get_remote_info()
Refactor get_remote_info() and define a low_level get_remote_url()
Add logic to re-use existing remote if available

Tries to use the remote named with the same name as the connected user.
If fails, defaults to pushing the branch using the URL.
Add checks for rebased branch on the remote and rebased PR
Check scc rebase fails without --remote if the origin has been renamed
Merge pull request #128 from sbesson/scc_rebase_fix

scc rebase: bug fix and improvements