Replace plaintext password storage with werkzeug scrypt hashing
- Add _migrate_password_hash() in create_app() to auto-migrate existing
plaintext convey.password → password_hash on startup
- Login now uses check_password_hash instead of == comparison
- Settings API hashes password before writing, strips hash from responses
- GET /api/config returns has_password boolean instead of password value
- No-password error message references 'sol password set'
- Pre-hashed test fixture, new tests for login/migration/settings API
- Doc updates: INSTALL.md, CONVEY.md, JOURNAL.md