I'd like to update the restore method in LanceDB to support restoring to a specific historical version of a table. Please modify all relevant files to add an optional version parameter to restore, defaulting to None. When version is provided, the implementation should perform a checkout to that version before executing the restore. If version is not specified, it should restore the currently checked-out version. Update the Python async bindings (_lancedb.pyi, table.py, and remote/table.py) to reflect the new method signature and behavior. In the Rust FFI layer (python/src/table.rs), modify the restore function to accept and correctly handle the optional version argument. For the cloud-backed RemoteTable in Rust (rust/lancedb/src/remote/table.rs), ensure that the version is included in the HTTP request body during a restore operation. Add or update docstrings and comments as needed to clarify how restore behaves with and without the version argument.