Filtering of `listen()`
From [discussion on Discord](https://discord.com/channels/489127045289476126/498852330754801666/1227546560699830345):

The main challenge I think will be coming up with the API that's suitable for everyone. But to start with, I'd copy the whole of the `listen` step into your own codebase, give it a new name (`filteredListen` or similar), then make the following changes:

1. Accept a filter function in the constructor: 
 
 https://github.com/graphile/crystal/blob/b82a080dc1f7826863c993746e70bbabb765a863/grafast/grafast/src/steps/listen.ts#L42-L51
3. Apply this filter function to the stream coming from `pubsub.subscribe(topic)`: 
 
 https://github.com/graphile/crystal/blob/b82a080dc1f7826863c993746e70bbabb765a863/grafast/grafast/src/steps/listen.ts#L89

`pubsub.subscribe(topic)` returns (potentially the promise to) an async iterable: 

https://github.com/graphile/crystal/blob/b82a080dc1f7826863c993746e70bbabb765a863/grafast/grafast/src/interfaces.ts#L660-L662

So you need to apply filtering to that async iterable by building a new async iterable that skips over values you don't want.