On second thought, `_match_snippets` isn't a good name either because this doesn't do all the matching.

Essentially there's three phases:

1. Match to client based on model-based rules (startpage, channel, disabled, etc).
2. Match to client based on client match rules.
3. Filter out snippets that are not available.

At this point I can't remember why we split them up, but moving the CMR matching into the `match_client` method sounds like a good idea to me. Then you can just move the date-filtering stuff to a queryset method (that doesn't return a queryset because we want to filter dates in python) and have something like:

```python
client = Client(**kwargs)
matching_snippets = Snippet.cached_objects.filter(disabled=False).match_client(client).filter_by_available()
```

Thoughts?