Implement changelist filtering in WC diffs by post-filtering.

This work was triggered by a bug report sent in by Peter Galcik, who noticed
that svn 1.8 crashed when requesting a repos-WC diff with changelist
filtering. In fixing that crash I noticed that the changelist filtering was
deficient in several other respects.

Changes are passed through a changelist-filtering 'diff processor'. This
approach is similar to how diff reversal and some other options are now
handled, and should be easier to get right and to maintain than embedding
changelist filtering in both of the diff implementations. On the other hand,
this approach will usually be less efficient than a pre-filtering approach.

TODO: We need tests for changelist filtering. I tested this patch by hand,
not comprehensively.

* subversion/libsvn_wc/diff.h
  (svn_wc__diff_local_only_file,
   svn_wc__diff_local_only_dir,
   svn_wc__diff_base_working_diff): Remove changelist filtering.
  (svn_wc__changelist_filter_tree_processor_create): New.

* subversion/libsvn_wc/diff_editor.c
  (edit_baton_t ,
   make_edit_baton,
   svn_wc__diff_base_working_diff,
   walk_local_nodes_diff,
   svn_wc__diff_local_only_file,
   svn_wc__diff_local_only_dir,
   handle_local_only): Remove changelist filtering.
  (close_file): Make sure we don't expect to see a valid checksum if we're
    skipping the node, as the sender may not have sent a diff at all.
  (svn_wc__get_diff_editor): Wrap the diff processor in a changelist
    filtering diff processor.
  (filter_tree_baton_t,
   filter_*,
   svn_wc__changelist_filter_tree_processor_create): New.

* subversion/libsvn_wc/diff_local.c
  (diff_baton,
   diff_status_callback): Remove changelist filtering.
  (svn_wc__diff7): Wrap the diff processor in a changelist


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1621978 13f79535-47bb-0310-9956-ffa450edef68