set remote callback before push

the origin `remote.push` method will not work if the reposity need to be authorize, because no call back set, so i copy the set perfomance the `fetch` method do to the `push`
`self._self_handle` needs to be set to `None` after the push operation completes, next to freeing the push object itself.