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