mpu6000: monitor some key registers for correct values

this will catch both bad SPI bus comms and a sensor that has been
reset causing incorrect configuration.
lsm303d: replace old register checking with new check_registers() method

this uses the same method as is now used in the MPU6000 to check that
the sensor retains its correct values
mpu6000: try resetting the mpu6000 up to 5 times

this mirrors the ardupilot driver. We have seen situations where the
mpu6000 on the Pixhawk comes up in SLEEP mode, despite a reset
l3gd20: added register checking

this checks at runtime that key registers have correct values
mpu6000: added factory self-test function

this follows the factory calibration self-test method in the datasheet
to see if the sensor still has the same calibration it had in the factory
mpu6000: monitor some more registers
mpu6000: added "mpu6000 testerror" command

used to generate a error case for reset testing
mpu6000: wait for 10ms after a full reset

this prevents the mpu6000 getting in a really weird state!
mpu6000: make register fixup much closer to a reset()

this may help automatic reset on the faulty boards
l3gd20: added "l3gd20 regdump" command
l3gd20: use the I2C disable bit on l3gd20H

this seems to prevent a mpu6000 reset from causing an issue on the
l3gd20H