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
independently.
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.
let's refactor some code and create a function for merge abort instead of special casing it.