Allow pushing a non-branch source rev to a remote branch

This change allows for specifying non-branch source revs when
pushing to remote branches. This is a capability that was broken as
part of PR #1618.

This change allows things like "HEAD", "HEAD~1", a specific SHA1, or a
local tag to be specified as the source revision when pushing to a
remote branch.

If there is an ambiguity, a local branch with the source name
provided will be preferred, so the original intent of PR #1618 will be
retained.