Adds an option to determine when to set upstream while pushing.

This answers #562.
This option is useful in the case where the user uses multiple remotes for a branch.
When pushing changes to the non upstream remote the user is not asked if he wants to change its upstream.
However, when no upstream is set, the question is asked.