This leads to the revert of rS355806; for slightly increased complexity in driver registration, this reduces duplication in keyboard registration and driver switch lookup and leaves us with one authoritative source for currently registered drivers. The reduced duplication later is nice as we have more procedure duplicated in keyboard setup.
keyboard_driver->registered is used to more quickly detect bogus adds/removes, but we must still walk the list if it's not set to make sure it hasn't been added via linker set. From KPI consumers' perspective, nothing changes- kbd_add_driver/kbd_delete_driver must still be balanced. The exception is that a driver may now also kbd_delete_driver to remove itself from the driver list even if it's only registered by linker set, in case some init was not successful or something else has gone wrong.
Detection for already-registered drivers in kbd_add_driver has improved, as the previous SLIST_NEXT(driver) != NULL check would not have caught a driver that's at the tail end.