Arming: use compass.configured method

This checks that when compass offset learning is off, that the offsets
are non-zero and that the detected device id matches the device id
stored to eeprom when the offsets were last saved.
Compass: sanity check instance in set_and_save_offsets
Compass: default device id to zero
Arming: accept non-const compass in constructor

The compass.configured() method checks the eeprom and cannot be const
meaning the Arming object requires a non-const reference to the compass.
Removed check for null compass because the compass object is always
created although this could lead to unnecessary pre-arn check failures
even though compass-use is set to false.
Plane: pass in compass to Arming constructor
AP_Compass: Corrected typo in parameter description

Corrected typo in parameter description
Plane: prepare for 3.0.4-beta3
Compass: Updated COMPASS_PRIMARY parameter description
Compass: update pixhawk expected device ids
Copter: rename control_hybrid to poshold
Copter: rename hybrid to poshold
Copter: AC3.2-rc3 version and release notes
Copter: set UARTs non-blocking at end of initialisation

Previously we were setting to non-block after arming but this reduce the
chance of bumping into a NuttX USB driver issue that can cause the uart
to become unresponsive and also makes Copter consistent with Plane
AC_AttControl: re-enable rate feedforward by default

Roll and Pitch rate controllers became sluggish without feed-forward
enabled.
VARTest: fixed build with compass changes
Replay: fixed build of replay tool

changes to compass API
Copter: fixed typos in parameter markup
AC_AttControl: fixed typo in parameter description
GCS_Mavlink: moved some more mavlink functions to GCS_Common.cpp
Plane: update for new API