UdevDevice creates a new QString in every wrapper.
For the most part this makes sense, but we may as well cache a property
if we're fetching it multiple times.
(we could even reduce it further and just use QByteArrays pointing to the
underlying char*s without copying)