### Description

The parsing of params in parameterized ES|QL queries appears to be inconsistent with the parsing of non-parameterized ES|QL queries. Some examples on current main:

- ```
  {"query": "row a = 1 | eval x = now() + ?", "params": [{"type":"time_duration", "value":"5 hour"}]}
  ```
  results in the following exception:
  ```
  "type":"parsing_exception","reason":"line 1:23: Cannot cast value [5 hour] of type [KEYWORD] to parameter type [TIME_DURATION]"}],"type":"parsing_exception","reason":"line 1:23: Cannot cast value [5 hour] of type [KEYWORD] to parameter type [TIME_DURATION]"
  ```
- ```
  {"query": "row a = 1 | eval x = now() + ?", "params": ["1 week"]}
  ```
  results in
  ```
  "type":"verification_exception","reason":"Found 1 problem\nline 1:22: [+] has arguments with incompatible types [DATETIME] and [KEYWORD]"
  ```
- ```
  "query": "row a = 1 | eval x = now() + ? week", "params": [1]
  ```
  results in
  ```
  "type":"parsing_exception","reason":"line 1:32: extraneous input 'week' expecting <EOF>"}],"type":"parsing_exception","reason":"line 1:32: extraneous input 'week' expecting <EOF>"
  ```

All the queries work fine if the `?` is manually substituted with the given parameter.

The first two indicate that the parsing of query parameters is not consistent with our normal parsing, type resolution and verification pipeline.

According to @astefan , `version` is affected in a similar way.

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java
source(ctx),
            expression(ctx.booleanExpression()),
            ctx.DESC() != null ? Order.OrderDirection.DESC : Order.OrderDirection.ASC,
            (ctx.NULLS() != null && ctx.LAST() != null || ctx.NULLS() == null && ctx.DESC() == null)
                ? Order.NullsPosition.LAST
                : Order.NullsPosition.FIRST
        );
    }
    public NamedExpression visitProjectExpression(EsqlBaseParser.SourceIdentifierContext ctx) {
        Source src = source(ctx);
        String identifier = visitSourceIdentifier(ctx);
        return identifier.equals(WILDCARD) ? new UnresolvedStar(src, null) : new UnresolvedAttribute(src, identifier);
    }
    @Override
    public Alias visitRenameClause(EsqlBaseParser.RenameClauseContext ctx) {
        Source src = source(ctx);
        String newName = visitSourceIdentifier(ctx.newName);
        String oldName = visitSourceIdentifier(ctx.oldName);
        if (newName.contains(WILDCARD) || oldName.contains(WILDCARD)) {
            throw new ParsingException(src, "Using wildcards (*) in renaming projections is not allowed [{}]", src.text());
        }
        return new Alias(src, newName, new UnresolvedAttribute(source(ctx.oldName), oldName));
    }
    @Override
    public Alias visitField(EsqlBaseParser.FieldContext ctx) {
        UnresolvedAttribute id = visitQualifiedName(ctx.qualifiedName());
        Expression value = expression(ctx.booleanExpression());
        String name = id == null ? ctx.getText() : id.qualifiedName();
        return new Alias(source(ctx), name, value);
    }