Fix a bug and greatly improve merge performance in a common use case. Quite a while back glasser pointed out that the code to filter self-referential mergeinfo was a performance hog - see http://svn.haxx.se/dev/archive-2008-02/0206.shtml. More recently arfrever found a merge bug where this filtering code removed valid mergeinfo - see http://subversion.tigris.org/servlets/ReadMsg?list=dev&&msgNo=142849. This change implements glasser's suggestion, which also fixes the problem arfrever noted. Suggested by: glasser * subversion/libsvn_client/merge.c (split_mergeinfo_on_revision): New. (filter_self_referential_mergeinfo): Where possible use svn_client__get_history_as_mergeinfo() one time per incoming mergeinfo merge source rather than svn_client__repos_locations() for each discrete range in each merge source's rangelist. * subversion/tests/cmdline/merge_tests.py (natural_history_filtering): Remove comment about XFail. (test_list): Remove XFail from natural_history_filtering.