VM generates wrong cast for negative enum values
### Description

Minimal example:
```nim
static:
  type Foo = enum A = -1
  echo (cast[Foo](-1) == A)
  echo cast[Foo](-1)
```

### Nim Version

Nim Compiler Version 2.1.9 [Linux: amd64]
Compiled at 2024-08-05
Copyright (c) 2006-2024 by Andreas Rumpf

git hash: c97a20ce492f335067c3e53731f60023fb39ae9d
active boot switches: -d:release

### Current Output

```text
false
Foo 4294967295
```


### Expected Output

```text
true
A
```


### Possible Solution

In vmgen.nim -> `genCastIntFloat`: `tyEnum` is listed in `unsignedIntegers`, I guess it should be signed instead?

### Additional Information

The issue came up with array indexing by enum, this code works at RT but fails at CT:
```nim
static: 
  type Foo = enum A = -1
  const a: array[Foo, int] = [42]
  doAssert a[A] == 42 # works
  for f in items(Foo):
    discard a[f] # Error: index 4294967296 not in 0 .. 0
```