Adding support for multiple remotes.

This supports multiple remotes, compiling a sorted unique list of all matching branches and displaying the result. The checkout will use the default remote (i.e. 'origin') if the branch exists there, otherwise, it will grab the branch from the remote that contains it and notify the user in the checkout message.

Example messaging where "stash" is the remote:

```
Branch hotfix/1.0.7 set up to track remote branch hotfix/1.0.7 from stash.
Switched to a new branch 'hotfix/1.0.7'
```