filter out metrics if they don't have the tags we want to aggregate by
fix accidential aggregation which would break

this fixes the following problem:
* you have many targets, and aggregate them together by summing
  and using buckets on your sums
* you do no explicit avg by aggregation, but with the old code
  it would get the avg by aggregation key for the aggregates we just
  got, and then try to aggregate them using averaging, which would
  sometimes error out cause it relies on having > 0 elements in the
  avg_by struct
fixes wrt aggregation, agg tag filter, buckets, displaying of tags

* undo earlier commit that restricts targets to only those
  that have the tags which tag keys are in sum by / avg by
* which means:
  don't break aggregation when (a) target(s) doesn't have one or more of
  the agg_by tags.
  there's actually some valid uses to aggregate metrics together
  whether they have a certain tag or not.
* fix display of tags in aggregates:
  * there was a bug that caused the same bucket_id_str to be applied to
    all tags for all targets when aggregating.  now the bucket_id_str
    is set per tag per each aggregated target
  * make it more clear (in tag value and differentiators) how many
    "real" different values vs how many uniques
add testcase that demonstrates a bug