- Created driver framework with probe/init lifecycle. Drivers register via
REGISTER_DRIVER macro which places pointers in a .drivers linker section.
- During boot, init_drivers() iterates the section, probes each driver
(checking if hardware is present), and initializes those that respond OK.
- Added .drivers section to linker.ld with __drivers_start/__drivers_end
symbols for iteration.
- Also added .rodata.* pattern to the .rodata section for string literals
placed in sub-sections by the compiler.
- No drivers are registered yet; the VGA driver will be the first.
Tested: boots cleanly with driver scan completing (0 registered, 0 loaded).