Three fixes in chip.py:
1. Add early device-tree check for Broadcom BCM chips. Previously,
BCM detection relied solely on /proc/cpuinfo Hardware field, which
is absent on aarch64 Alpine Linux (and potentially other distros).
The new check matches 'brcm,bcm2' in /proc/device-tree/compatible,
which is present on all Raspberry Pi boards regardless of distro.
2. Guard against NoneType crash when compatible is None. If both
/proc/cpuinfo Hardware and /proc/device-tree/compatible are
unavailable, compatible.split() would raise AttributeError,
which gets silently swallowed by __getattr__ and surfaces as
a confusing bare AttributeError.
3. Include attribute name in __getattr__ AttributeError for better
debugging.
Fixes#342