sqlite: split read_master / create_table, narrow test catch-alls, inline test_hostile
read_master: extract a small classify_master_row helper that returns a
[Mtable | Mautoindex | Mextra | Mskip] variant. The big match/for-loop
shrinks to a flat tag dispatch.
create_table: stop substring-scanning the SQL for the table name. The
lexer/parser already produces an Ast.create_table value, so use
[ct.tbl_name] directly. Drops ~50 lines of fragile string fiddling.
Test cleanups: rename 9 tests with 5+ underscores to shorter forms.
Narrow the [with _ -> ...] handlers in test_sqlite.ml to
[Sqlite.Unique_violation _ | Failure _], and the inlined hostile suite
adds Invalid_argument / Sys_error / End_of_file via a [safe_exn]
predicate so unexpected exceptions still surface.
Inline test_hostile.ml content into test_sqlite.ml as flat helpers /
test functions plus a [hostile_cases] list appended to the main suite.