push: feed pushoperation object to _pushbookmark function

This will able the bookmark synchronisation to have full information on the
ongoing push and pass information to other operation.
push: move obsolescence marker exchange in the exchange module

The obsolescence marker exchange code was already extracted during a previous
cycle. We are moving the extracted functio in this module. This function will
read and write data in the `pushoperation` object and I prefer to have all core
function collaborating through this object in the same place.

This changeset is pure code movement only. Code change for direct consumption of
the `pushoperation` object will come later.
push: feed pushoperation object to _pushobsolete function

This will allow the obsolete marker synchronisation to have full
information on the ongoing push and pass information to other
operation.
push: drop now outdated comment

This `_pushobsolete` now exist for modularity purpose.
push: move obsolescence related message into _pushobsolescence function

No good reason to have them in the main fonction.
push: move local lock logic in pushoperation

During push, we try to lock the local repo to move local phase according to what
we saw/pushed on the remote repo. Locking the repo may fail, in that case we let
the push proceed without local phase movement (printing warning).

This mean we have code in phase synchronisation that will check if the local repo is
locked or not. we need to move this information in the push object to be able to
extract the phase synchronisation in its own function. This is done as a boolean
because putting reference to the actual lock outside of the main function
sounded a bad idea.
push: explicitly feed pushop to localphasemove

Now that pushop is holding all the push related data, we do not really need a
closure anymore. So we start feeding the object to `localphasemove` and will
make it a normal function in the next commit.
push: move local phase move in a normal function

We now have the modularity for simpler approach `localphasemove`.
push: move push return value in the push object

The return code convey information about the success of changeset push. This is
used by phases to compute the new common set between local and remote. So we
need to move it into the object to extract the phase sync from the god
function.

Note that this information will be used by obsolescence markers too.
push: move outgoing object in the push object

The set of outgoing and common changeset are used by phases to compute the new
common set between local and remote. So we need to move it into the object to
extract the phase sync from the god function.

Note that this information will be used by obsolescence markers too.
push: move phases synchronisation function in its own function

Now that every necessary information is held in the `pushoperation` object, we
can finally extract the phase synchronisation phase to it's own function. This
is the first concrete block of code we extract from the huge push function.
Hooray!

This changeset is pure code movement only.
hgext: updated extensions to return a baseset when adding symbols
revset: changed getset so that it can return a lazyset

Not converting it manually to a baseset anymore. At this point every revset
method should return a baseset typed structure.
run-tests: fix typo and print out failing line

Instead of stripping the newline and printing the line, only the newline was
printed.
The output on buildbot will make more sense now.