WL#7361: MSR: per-channel replication filters

Affects: Server-8.0   —   Status: Complete

Executive Summary
=================
Add replication filtering support to a multi-source slave,
to filter out the execution of selected replicated data from a
specific channel. In short, create channel specific replication
filters (also called per-channel replication filters).

Currently, (through WL#1697) replication filters are global i.e
they are applicable to all channels. This WL aims to make to create
per-channel replication filters, and global replication filters
for backward compatibility.


USES
====
Channel specific filters are needed in case when a multi-sourced slave is
in use. This feature is typically used in the following way:

Example1: Consider a Master1 with databases DBLOCAL, DB1,
               and a Master2 with databases DBLOCAL2, DB2.
  If a slave that wants to replicate from masters Master1 and Master2
  needs to filter out local databases then it needs to create channel
  specific filters for masters Master1 and Master2

Example2: Consider the case of filtering out replicated data from system
          tables from all other sources except one.

        Example: When setting up replication with GTIDs+MSR.)
        master1> create replication user, "slave_user";
        master2> create replication user, "slave_user";
                 the above statements are replicated to a slave.
       Unless, GTID_NEXT is set on the slave for master2,
       there is an obvious conflict on the user name and we want to avoid
       that using per channel filters.