No Nulls Array: [String!]!
<!-- Before opening an issue: if you use `npm` try running `yarn` instead; if
      you run `yarn`, please try running `npx yarn-deduplicate && yarn`. -->

<!-- You can also chat with us on Discord: http://discord.gg/graphile -->

### Summary

https://www.graphile.org/postgraphile/why-nullable/ doesn't mention arrays which can't contain nulls. 

<!-- Please detail the issue you'd like to discuss. -->

I tried:
```sql
array text[] default '{}' not null check (array_position(array, null) is null)
```

but that doesn't change anything. 

With this plugin i was able to change the GraphQL type
```ts
export function NonNullArraysPlugin(builder: SchemaBuilder) {
  builder.hook('GraphQLObjectType:fields:field', (field, build, context) => {
    const {
      scope: { pgFieldIntrospection, isPgRowType },
    } = context
    const {
      graphql: { GraphQLNonNull, GraphQLList, isNonNullType, isListType },
    } = build

    if (
      isPgRowType &&
      pgFieldIntrospection.type.isPgArray &&
      pgFieldIntrospection.tags.noNullsArray
    ) {
      if (isNonNullType(field.type)) {
        const list = field.type.ofType
        if (isListType(list)) {
          const inner = list.ofType
          if (!isNonNullType(inner)) {

            return {
              ...field,
              type: GraphQLNonNull(GraphQLList(GraphQLNonNull(inner))),
            }
          }
        }
      }
    }
    return field
  })
}
```
but the no nulls constraint doesn't show up in `pgFieldIntrospection` or `pgIntrospection` is there a way to automatically detect it? 
If yes i think it would be possible to always add the inner non null since if row level constraints are present the whole row is null.

Then there is the sql codegen. Currently selecting an array generates this query
```sql
case when (__local_1__."array") is null then null when coalesce(
  array_length(
    (__local_1__."array"),
    1
  ),
  0
) = 0 then '[]'::json else (
  select json_agg(__local_2__)
  from unnest((__local_1__."array")) as __local_2__
) end
```
which is i guess the paranoid version to guarantee an empty array even when row level security denied access. Is it possible to tell postgraphile to assume it's always allowed and thus shorten the query to
```sql
to_json(__local_1__."array")
```
inside a `json_build_object` even the `to_json` could be omitted

### Additional context
<!--


 Please provide additional context such as environment versions (including
      operating system, Node, PostgreSQL, Redis, etc. as relevant), software
      versions (from `yarn.lock`) or similar, plugins in use, database schema
      if relevant, bundler (if any). -->


postgraphile: 4.12.11
PostgreSQL: 14.5
