ArduPPM: Changed the behaviour of the PPM encoder: if a channel is lost retain its last value instead of a fail-safe value (except for Ch3/throttle)
ArduPPM: Set Ch1-4 to their fail-safe position and leave Ch5-8 at their last value
Update Tools/ArduPPM/Libraries/PPM_Encoder.h

- Small optimization
PPMEncoder - bug fix from previous commit
ArduPPM: Versioning cleanup, 2.3.16 should be the next official release
ArduPPM: version 2.3.16 for release
Copter: fix for acro throttle bug
Rover: reduce throttle more directly

this gives better throttle control in turns and waypoints
DataFlash: make it safe to do DataFlash logging from timers

this uses a non-blocking semaphore take if we are in a timer
process. Useful for logging failsafe events
Compass: add get_motor_compensation

Remove redundant set_motor_compensation call
Copter: add compassmot to cli

Allows user to setup compensation for motor's interference on the
compass
Navigation: Waypoint course tracking and loiter tracking

These changes introduce a unified PD control to both waypoint course following and loiter. They do introduce two additional gains:

XTRK_VGAIN_SC - This is the gain from cross track velocity to demanded heading. A value 100 will give 1 degree of heading change for every 1 m/s of cross track velocity. This can be adjusted to provide the desired amount of overhoot on track capture.

LTR_FGAIN - This is a forward path gain from the updated loiter controller that scales the demanded centripetal acceleration. The default value for this parameter should be 1. This can be increased if the aircrafts average distance from the waypoint during loiter is greater than demanded.
Plane: Navigation update for improved tracking and loiter accuracy

Unified crosstrack and loiter gains
Improved nav_roll controller