feat(device-inventory): hardware discovery pipeline natural key deduplication
- protocol.h: add K_LOCATOR, K_SOCKET, K_DEVICE_NAME natural key constants
- models.h: add locator/socket_designation/device_name fields to structs
- database.cpp: apply_*, serialize_*, save_nolock, load all updated;
upsert_part gains natural key fallback for memory/cpu/disk
- discovery.cpp: emit K_LOCATOR for memory sticks/slots; fix CPU filter
to skip phantom iLO entries; emit K_SOCKET for cpu/cpu_slot;
emit K_DEVICE_NAME for disks with serial collision fix; replace NIC
blocklist with /sys/class/net/<if>/device symlink check + lspci enrichment
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>