this is patch series for refactoring/enhancement of 'filemerge()'. patch #3 is proposal of new internal merge tool 'internal:patch'. this can be released separately as third-party extension, if patch #1 is accepted.