push: use the common refspec parser

There is one well-known and well-tested parser which we should use,
instead of implementing parsing a second time.

The common parser is also augmented to copy the LHS into the RHS if the
latter is empty.

The expressions test had to change a bit, as we now catch a bad RHS of a
refspec locally.
Merge pull request #2693 from libgit2/cmn/push-refspec-refactor

push: use the common refspec parser