Allow `fn version()` to mutate version numbers in place.

The `rust` allocated memory for the version no. needs to be modified by FFI.

In light of recent changes: we mark the variables as mutable, and make sure
the FFI accepts mutable raw pointers.