`engine_forkchoiceUpdatedV1`/`V2`/`V3` incorrectly only check for correct engine API call version when payload attributes present
It does these checks in `validateVersion`, but this is only called when `attrsOpt.isSome`:
https://github.com/status-im/nimbus-eth1/blob/bda760f41dac22f66c9a3ffa56d25bd2f274f4d1/nimbus/beacon/api_handler/api_forkchoice.nim#L188-L193

whereas https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#specification-1 requires:
> 2. Consensus layer client **MUST** call this method instead of `engine_forkchoiceUpdatedV1` under any of the following conditions:
>    - `headBlockHash` references a block which `timestamp` is greater or equal to the Shanghai timestamp,
>    - `payloadAttributes` is not `null` and `payloadAttributes.timestamp` is greater or equal to the Shanghai timestamp.

There's no check for the `headBlockHash` block `timestamp` mismatching the fork case.