Questions based on initial experience with v5 polymorphism
### Summary

I started experimenting a bit with the new polymorphism in v5 tonight and found myself wondering about a few different things.

### Additional context

PostgreSQL: docker - `postgis/postgis:16-3.4-alpine`
Node: 20.13.1
Postgraphile: 5.0.0-beta.26

Setup:

<details><summary><code>graphile.config.mjs</code></summary>

```js
import { PostGraphileAmberPreset } from "postgraphile/presets/amber";
import { PostGraphileRelayPreset } from "postgraphile/presets/relay";
import { makePgService } from "postgraphile/adaptors/pg";
import { cleanEnv, str, host, port } from "envalid";

const env = cleanEnv(process.env, {
  GQL_HOST: host(),
  GQL_PORT: port(),
  DB_APP_API_USER: str(),
  DB_APP_API_PASSWORD: str(),
  DB_NAME: str(),
  DB_HOST: host(),
  DB_PORT: port(),
  NODE_ENV: str({ choices: ["development", "test", "production", "staging"] }),
  GRAPHILE_ENV: str({
    choices: ["development", "test", "production", "staging"],
  }),
});
const connectionString = `postgres://${encodeURIComponent(env.DB_APP_API_USER)}:${encodeURIComponent(env.DB_APP_API_PASSWORD)}@${env.DB_HOST}:${env.DB_PORT}/${env.DB_NAME}`;

let superuserConnectionString = undefined;
if (env.NODE_ENV === "development") {
  const superEnv = cleanEnv(process.env, {
    DBMS_OWNER_USER: str(),
    DBMS_OWNER_PASSWORD: str(),
  });
  superuserConnectionString = `postgres://${encodeURIComponent(superEnv.DBMS_OWNER_USER)}:${encodeURIComponent(superEnv.DBMS_OWNER_PASSWORD)}@${env.DB_HOST}:${env.DB_PORT}/${env.DB_NAME}`;
}

/** @type {GraphileConfig.Preset} */
const preset = {
  extends: [PostGraphileAmberPreset, PostGraphileRelayPreset],
  pgServices: [
    makePgService({
      connectionString,
      superuserConnectionString,
      pubsub: true,
      schemas: ["dansdata", "portal"],
    }),
  ],
  gather: {
    pgStrictFunctions: true,
    installWatchFixtures: true,
  },
  schema: {
    dontSwallowErrors: true,
    jsonScalarAsString: false,
    pgForbidSetofFunctionsToReturnNull: true,
  },
  grafserv: {
    host: env.GQL_HOST,
    port: env.GQL_PORT,
    graphiql: true,
    graphqlOverGET: false,
    graphqlPath: "/graphql",
    graphiqlPath: "/",
    watch: env.NODE_ENV === "development",
  },
  grafast: {
    explain: env.NODE_ENV === "development",
  },
};

export default preset;
```
</details>

<details><summary><code>seed.sql</code></summary>

```sql
CREATE SCHEMA if NOT EXISTS "dansdata";

CREATE TYPE dansdata.profile_type AS ENUM ('individual');

CREATE TABLE dansdata.profiles (
  id UUID DEFAULT gen_random_uuid () PRIMARY KEY,
  type profile_type NOT NULL,
  name TEXT NOT NULL
);

comment ON TABLE dansdata.profiles IS $$
  Represents an entity with profile data.

  @interface mode:relational type:type
  @type individual references:individuals
  @name Profile
$$;

CREATE TABLE dansdata.individuals (
  id UUID PRIMARY KEY REFERENCES profiles (id) ON DELETE CASCADE
);

comment ON TABLE dansdata.individuals IS $$
  Represents an individual person.

  @name Individual
$$;
```

I also tried the `@interface mode:union`/`@implements Profile` version of the above (without the `profiles.type` column).

</details>


---

#### 1. Include example queries in documentation

The [documentation](https://postgraphile.org/postgraphile/next/polymorphism#interface-moderelational) is quite clear in how one should use the smart comments to configure polymorphism. Good work!

I am however, missing examples of what effect this has on the syntax of graphql queries. For example, I'm currently forced to write

```gql
query {
  allIndividuals {
    nodes {
      id
      profileByRowId {
        name
      }
    }
  }
}
```

whereas I would expect to write

```gql
query {
  allIndividuals {
    nodes {
      id
      name
    }
  }
}
```

I cannot figure out if I'm doing something wrong or if this is the intended behavior as the documentation does not describe the intended GraphQL syntax.

---

#### 2. `PostGraphileRelayPreset` does not eliminate `Row` in `ByRowId`

`PostGraphileRelayPreset` is [suggested](https://postgraphile.org/postgraphile/next/node-id#more-on-the-relay-preset) as a way to hide the ugly `rowId` from your schema. This does work. However, connections are still generated using the `ByRowId` syntax. Even worse, it seems generated `ByRowId` connections do not actually expect the `rowId` after enabling `PostGraphileRelayPreset`! Instead, the value returned from the `id` is expected. This becomes confusing very quickly.

Current:

```gql
mutation {
  createIndividual(
    input: {individual: {profileByRowId: "WyJQcm9maWxlIiwiZjVmOWNiNWEtN2Y1Mi00MzgyLWE3ZDgtMzdkOWZhY2Q5NjJkIl0="}}
  ) {
    individual {
      id
    }
  }
}
```

Expected

```gql
mutation {
  createIndividual(
    input: {individual: {profileById: "WyJQcm9maWxlIiwiZjVmOWNiNWEtN2Y1Mi00MzgyLWE3ZDgtMzdkOWZhY2Q5NjJkIl0="}}
  ) {
    individual {
      id
    }
  }
}
```

---

#### 3. I would like to drop the `ByRowId` when accessing parent properties

Not sure how to do this. I'm guessing I'd have to write some kind of custom plugin? It would be nice if it was the default though.

Current:

```gql
query {
  allIndividuals {
    nodes {
      id
      profileByRowId {
        name
      }
    }
  }
}
```

Expected

```gql
query {
  allIndividuals {
    nodes {
      id
      profile {
        name
      }
    }
  }
}
```

Even better

```gql
query {
  allIndividuals {
    nodes {
      id
      name
    }
  }
}
```

---

#### 4. I can't find a way to create a `Profile` when creating an `Individual`

In my system, a `Profile` is always one of a few given types. It is unexpected that a `Profile` should be created without an associated e.g. `Individual`. Preferably, I would like to remove `createProfile` from my mutations altogether and expose only e.g. `createIndividual`. However, this means `createIndividual` needs to be able to create the base `Profile`, which it seems is not possible?

Current
```gql
mutation {
  createIndividual(input: {individual: {
    # This is the only property available in `individual`.
    profileByRowId {
      # There are no properties available here for creating a profile
    }
  }}) {
    id
  }
}
```

Expected
```gql
mutation {
  createIndividual(input: {individual: {
    profile: {
      name: "Felix"
    }
  }}) {
    id
  }
}
```

---

#### 5. Custom startup text in graphiql

I'm planning to use Postgraphile to expose a free API for third parties. I would therefore like to change the default text in graphiql/Ruru to link to related resources. Is this possible?

<details><summary>Default text</summary>

```gql
# Welcome to Ruru, our distribution of GraphiQL and related tooling to
# inspect your GraphQL API.
#
# GraphiQL is an in-browser tool for writing, validating, and
# testing GraphQL queries.
#
# Type queries into this side of the screen, and you will see intelligent
# typeaheads aware of the current GraphQL type schema and live syntax and
# validation errors highlighted within the text.
#
# GraphQL queries typically start with a "{" character. Lines that starts
# with a # are ignored.
#
# An example GraphQL query might look like:
#
#     {
#       field(arg: "value") {
#         subField
#       }
#     }
#
# Keyboard shortcuts:
#
#  Prettify Query:  Shift-Ctrl-P (or press the prettify button above)
#
#     Merge Query:  Shift-Ctrl-M (or press the merge button above)
#
#       Run Query:  Ctrl-Enter (or press the play button above)
#
#   Auto Complete:  Ctrl-Space (or just start typing)
#
```

</details>