"Simple subscriptions" in V5 - `listen` field
V5 doesn't contain simple subscriptions because, quite frankly, I hate them and think they're a terrible idea. That said, there's plenty of people using them, so I quickly hacked together an untested V5 equivalent [in chat](https://discord.com/channels/489127045289476126/498852330754801666/1174007748468424795):

```ts
import { makeExtendSchemaPlugin } from "postgraphile/utils";
import { context, lambda, listen } from "postgraphile/grafast";
import { jsonParse } from "postgraphile/@dataplan/json";

const SimpleSubscriptionsPlugin = makeExtendSchemaPlugin((build) => {
  // const { nodeIdHandlerByTypeName } = build;
  return {
    typeDefs: /* GraphQL */ `
      extend type Subscription {
        listen(topic: String!): ListenPayload
      }

      type ListenPayload {
        event: String
        relatedNode: Node
      }
    `,
    plans: {
      Subscription: {
        listen: {
          subscribePlan(_$root, { $topic }) {
            const $pgSubscriber = context().get("pgSubscriber");
            return listen($pgSubscriber, $topic, jsonParse);
          },
          plan($event) {
            return $event;
          },
        },
      },
      ListenPayload: {
        event($event) {
          return $event.get("event");
        },
        relatedNode($event) {
          const $nodeObj = $event.get("__node__");
          const $nodeId = lambda($nodeObj, obj => JSON.stringify(obj));
          const nodeIdHandlerByTypeName = getNodeIdHandlerByTypeName(build);
          return node(nodeIdHandlerByTypeName, $nodeId);
        },
      },
    },
  };
});

// In future, `build.nodeIdHandlerByTypeName` should work, but it's not currently exposed so this works around it.
function getNodeIdHandlerByTypeName(build) {
  const map = {};
  for (const typeName of build.getNodeTypeNames()) {
    map[typeName] = build.getNodeIdHandler(typeName);
  }
  return map;
}
```
