Refactor devfs, each subsystem registers its own nodes
* Add devfs_register_device() callback system so each driver
creates its own /dev entries instead of hardcoding in devfs.c
* Move TTY, PTY, keyboard, mouse, input, ws, and framebuffer
device node setup out of devfs.c into their respective files
* Split framebuffer /dev/fb logic into new framebuffer_dev.c
* Init subsystems (tty, pty, input, keyboard, mouse, ws) from
kernel_main before devfs_init runs the callbacks