More tests of SubscriberList model

Add passing tests of SubscriberList.with_at_least_one_tag_of_each_type
to narrow down its behaviour a bit more, and tests of
SubscriberList.where_tags_equal, which fail in some cases.
Add a stricter `with_all_matching_keys` method

Paired with @rboulton.

We now check that we have all the keys rather than an overlapping subset
of them, and use this in `where_tags_equal`.

As part of this we decided to drop the duplicate/ordering related tests
as they could be done as a separate pull request to increase strictness
at the API boundaries.