Improve compatibility of UAVCAN compasses

This PR adds a read()-style interface and some ioctls to allow using UAVCAN compasses with software built on the legacy device file interface.

Note: This PR also changes the result of the MAGIOCGEXTERNAL ioctl to report the true result (the UAVCAN compass is usually external). Without doing this, at least APM applies the wrong rotation correction. I would expect the same to happen with the PX4 native stack.
This could turn out very problematic @pavel-kirienko we expect sensor timestamps to be in boot time microseconds, but it might make sense to add a Unix timestamp as well.