Replace per-VM indexed array for modules with hash-based lookup.
Previously, evaluated module values were cached in a separate
vm->modules array indexed by module->index assigned at compile time.
This required keeping the array size in sync with shared->module_items,
which was error-prone in interactive mode where new modules could be
compiled across commands.
Instead, store evaluated module values directly in the per-VM module
copy already maintained by vm->modules_hash. This unifies the import
and require() caching paths and eliminates the index-based array along
with module->index and shared->module_items fields.
This fixes `make shell_test` when configured with --debug=YES.