hmc5883: use a RingBuffer to hold report queue

this simplifies the queue handling, and avoids the need for a
start()/stop() on queue resize