AP_HAL_Linux: Add support for in-kernel SPI CS handling

Add support for /dev/spidev<bus>.<cs> in-kernel SPI CS handling, and convert
existing SPI devices over.

 * Add a new member _subdev to the LinuxSPIDeviceDriver class, and initialiser
   in LinuxSPIDevice constructor.  Use subdev 0 for GPIO-managed CS
 * Extend the _cs_pin to signed 16 bits and define SPI_CS_KERNEL (-1) for
   kernel-managed CS
 * Move to per-device file descriptors (required for in-kernel CS)
 * Extend spidev filenames to include bus and subdevice numbers, possibly
   longer than 1 digit each
 * Allow support for platforms enumerating /dev/spidevNNN from non-zero bases
 * Convert existing users over to the new API

Signed-off-by: John Williams <john@whelanwilliams.net>
HAL_Linux: tidy up SPI debugging a bit
build: added motor_test, and fixed build checks for PX4
PX4: disable auth command to keep us below 1MByte
AP_HAL: added set_esc_scaling() RCOutput function

this will be used to scale outputs for uavcan ESCs based on throttle
range
HAL_PX4: publish actuator values for UAVCAN ESCs

this publishes scaled actuator values so that the uavcan module can
drive ESCs
Rover: setup pwm esc scaling
Copter: setup pwm esc scaling
Plane: setup pwm esc scaling
DataFlash: added logging of ESC feedback (currently only available with UAVCAN ESCs)
DataFlash: log each ESC separately

this saves log space for ESCs that are not initialised (eg. only 3rd
ESC on fixed wing) and is a bit easier to deal with as a user
DataFlash: prevent build errors on non-PX4 targets
HAL_Linux: Enable external clk for RCOutput_Navio
That should fix PWM value drifts.
HAL_Linux: Optimize bandwidth for RCOutput_Navio
40% less bytes in I2C transactions for PCA9685.
AP_Notify: added abstract Led and RGBLed classes
AP_HAL_Linux: Bypass manual CS assertion for SPI_CS_KERNEL mode

Missed from initial patch series

Signed-off-by: John Williams <john@whelanwilliams.net>
plane: Basic Zynq Linux platform support

Preliminary support for Zynq/Linux on the 'ZyboPilot' HW platform.

see https://github.com/trjw/ZyboPilot-bsp for the PetaLinux / Vivado project
files.

At this stage CPPM/Pulse in and PWM out work, and in CLI mode the passthru
test works correctly.

The platform has passed minimal smoke testing in HIL mode.

ZYNQ IS NOT FLIGHT TESTED YET!  FLY THIS PLATFORM AT YOUR OWN RISK!

Signed-off-by: John Williams <john@whelanwilliams.net>
AP_HAL_Linux: Enable SPI-connected MPU9250, MS5611 for Zynq platform

Signed-off-by: John Williams <john@whelanwilliams.net>
AP_Compass: Move HMC5xx3 constants to shared header

Preparing for addition of HMC5983 driver which uses the same register/cmd set

Signed-off-by: John Williams <john@whelanwilliams.net>
AP_Compass: Add support for HMC5983 (SPI mode only)

This is based on the 5843.  Only SPI mode is currently supported

Signed-off-by: John Williams <john@whelanwilliams.net>