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_TECS: fixed range values
PX4: disable auth on px4v1 too
AP_HAL_Linux: enable output for PCA9685 PWM in NavioRCOuput
AP_HAL_Linux: added LinuxSPIUARTDriver that can handle SPI-driven Ublox
AP_HAL_Linux: external GPS fixed