LL40LS driver: Added new driver to the config make files
LL40LS driver: adding new range finder driver
LL40LS driver: Updated the value to write to the register to trigger a measurement
LL40LS driver: Changes from the May 4th plane test flight
MB12XX Driver: Added a class instance and device specific path
device: added a _device_id to all drivers

this device ID identifies a specific device via the tuple of (bus, bus
type, address, devtype). This allows device specific configuration
data to be stored along with a device ID, so the code can know when
the user has changed device configuration (such as removing an
external compass), and either invalidate the device configuration or
force the user to re-calibrate
drv_mag: added devtypes for magnetometers
hmc5883: setup device type
lsm303d: setup device type
device: pass CDev::ioctl() to superclass

this allows DEVIOCGDEVICEID to work. This also changes ioctl() for
Device to match CDev
Restructure the locking around SPI transfers
device: use bitfields to keep DeviceStructure small

this keeps it small enough to fit in a float, which makes it possible
to see the full value in a MAVLink tlog
mpu6000: fixed internal/external mixup in pointers

Thanks to Emile for spotting this!
hmc5883: periodically check the config and range registers

this copes with I2C comms errors causing the range or config registers
to become corrupted, leading to bad reading. This is easily
reproducible with a 1.3m I2C cable in the same run of cable as a GPS
UART cable. The error happens every half hour or so.