jeffjiang: split current mixed QueryRules into three isolate QueryRules by the source of the rules

Currently, Vitess' query rules can come from three sources:

1. Tablet keyspace range from Topo Server
2. Blacklisted tables from Topo Server
3. CustomRule from local file

Mixing the three into one QueryRules structure may cause namespace confusion to users, it may also cause ambiguity when updating QueryRules. After grouping the rules by their sources, each QueryRules structure will only come from a single source, thus clarifying the namespace, which is the best for rule updating logics
Thanks, so this change is mainly to gathering all query rules into a single place, the QueryRuleInfo. And the only place that SchemaInfo needs QueryRuleInfo is GetPlan/GetStreamPlan, and for this, it can simply call QueryRuleInfo.filterByPlan to apply rules.

I prefer a single authority of QueryRules since the logic is simpler, so now queryruleinfo is just queryruleinfo and schemainfo is just schemainfo, nothing is mixed, which I think serves our original goal to clean up the code