Use persistent Btree.Index for UNIQUE constraints instead of in-memory Hashtbl
Indexes are now stored as Btree.Index B-trees in the database file and
registered in sqlite_master as type "index" (sqlite_autoindex_<tbl>_<n>),
matching real SQLite behavior. No more full table scan on reopen.