Replace the monolithic schema.sql embed with a numbered migration system
following the pixa pattern:
- Add schema/000.sql: bootstrap migration creating schema_migrations table
with INTEGER PRIMARY KEY version column and applied_at timestamp
- Move full schema to schema/001.sql (renamed from schema.sql)
- Remove redundant schema/008_uploads.sql (uploads table already in main schema)
- Rewrite database.go migration logic:
- Embed schema/*.sql directory instead of single schema.sql
- bootstrapMigrationsTable() checks for table existence, applies 000.sql
- applyMigrations() iterates numbered files, skips already-applied versions
- ParseMigrationVersion() extracts version from filenames (e.g. 001.sql)
- Go code does zero INSERTs for bootstrap — 000.sql is self-contained
- Update database_test.go to verify schema_migrations table exists
- Changed blob table to use ID (UUID) as primary key instead of hash
- Blob records are now created at packing start, enabling immediate chunk associations
- Implemented streaming chunking to process large files without memory exhaustion
- Fixed blob manifest generation to include all referenced blobs
- Updated all foreign key references from blob_hash to blob_id
- Added progress reporting and improved error handling
- Enforced encryption requirement for all blob packing
- Updated tests to use test encryption keys
- Added Cyrillic transliteration to README