This adds support of hg merge --abort to hg abort plan.
This involves refactoring hg.merge into two different
functions removing the abort logic of merge from hg.merge
and then creating a seperate hg.abortmerge to handle the
abort logic so that the abortion of merge can be called
hg.abortmerge is then registered as abortfunc for the
state detection API so that commands.abort can use it to
deal with an unfinished merge operation.
Results are shown as tests.