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.