AP_Compass: separate logic to frontend

Compass is separated in a backend and
frontend interface. Compass class corresponds
now with the frontend.
AP_Compass: Update HIL to the backend
AP_Compass: Update HMC5843 to the backend
AP_Compass: Changes in compass for SITL
Copter: Update compass to the new interface
Rover: Update compass to the new interface
Plane: Update compass to the new interface