device: use bitfields to keep DeviceStructure small

this keeps it small enough to fit in a float, which makes it possible
to see the full value in a MAVLink tlog