push: trivial reorganization

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Add concept of 'publish' branch

The upstream branch is:

  branch.$name.remote
  branch.$name.merge

The publish branch is:

  branch.$name.pushremote
  branch.$name.push

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
branch: allow configuring the publish branch

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
t: branch add publish branch tests

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
push: add --set-publish option

To setup publish tracking branch, like 'git branch --set-publish'.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
branch: display publish branch

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>