security: implement central CSPRNG with real entropy (M8)
- Create src/kernel/csprng.c with ChaCha20-based DRBG
- Entropy sources: RDTSC, timer ticks, interrupt timing, user input
- Add csprng_init() called at boot in kernel_main()
- Add csprng_get_bytes(), csprng_get_u32(), csprng_get_u64() APIs
- Add csprng_add_entropy() for /dev/random writes
- Update src/kernel/devfs.c:
- Remove local PRNG (prng_state, prng_next)
- Use csprng_get_bytes() in dev_random_read()
- Use csprng_add_entropy() in dev_random_write()
- Spinlock protection for SMP safety
- Reseed mechanism every 256 entropy additions
Validation:
- make -j12: PASS
- make test-host: PASS (111/111)
- make test SMOKE_SMP=4: PASS (127/127)
- make test-battery: PASS (153/153)
- make analyzer: PASS
Addresses M8 from docs/URGENT_SECURITY_STATUS_2026-06-09.md