refactor(datastore): drop dead extensions SQLite table + getTilePath fallback
The extensions table was created on every boot via CREATE TABLE IF NOT
EXISTS but never written to anywhere — it predates the
manifestVersion: 3 unified registry. Only protocol.ts::getTilePath read
from it as a fallback for installed external tiles, wrapped in try so
new DBs without the table fell through silently.
After deletion every tile resolves through the in-process tilePaths
map (built-ins + dev-loaded). Existing users' DBs keep the table with
its rows, but nothing reads them anymore.
- backend/electron/datastore.ts: drop CREATE TABLE extensions block + 3 indexes
- backend/electron/protocol.ts: simplify getTilePath to a tilePaths.get
(deletes the SELECT FROM extensions fallback + shortname-by-metadata loop)
Build clean, unit tests 2277/0.