Added Push error checking.

Push will now throw an exception when it cannot push for one reason or another.
Abort push if the ref I am pushing to changed during the push.