AP_InertialSensor_MPU9150: I2C userspace driver sensor added.

The MPU9150 is a 9 axis sensor that includes 3 accelerometers,
3 gyroscopes and 3 magnetometers. All accessible through I2C.
The AP_InertialSensor_MPU9150 class allows APM to use this sensor.
HAL_BOARD_ERLE: new abstraction layer, Erle Robot

A layer for the OS/OW Erle Robot quadcopter has been
created. For now the robot relies on the AP_HAL_LINUX
layer.
HAL_Linux_Class: patch the i2c bus when used with Erle Robot.

This is a quick fix so that the code can run properly in the
robot Erle (which uses the i2c-2 bus). In order to do so,
pass -DERLE_ROBOT to the CFLAGS variable in the Makefile.

As Tridge pointed out, the AP_HAL layer is currently not ideal.
The driver should look for the I2C address it wants on all
available I2C buses so that a function in the AP_HAL enumerate
buses, and change the AP_HAL I2CDriver API to take a bus number
as an argument to all functions.
ArduCopter: tweeking so that it works with Erle
L3G4200D: fix in the test example provided.

The test coded had a call to "wait_for_sample" that expected one
argument and 0 where provided.
AP_HAL_Linux: SPIDriver, add MPU6000 support
APM_Config.h: Enable the CLI by default.
config.h: disable the MAGNETOMETER in the Erle HAL
AP_HAL: Add SPIDevice_MPU9250 as a device.
AP_HAL_Linux: Add support for SPIDevice_MPU9250

The Invensense MPU9250 SPI device is connected to
SPI1, thereby SPIDriver class should return the
corresponding device.
AP_InertialSensor_MPU9250: SPI userspace sensor driver.

InvenSense MPU9250 sensor driver and test code (available under
libraries/examples/).
AP_HAL_Linux_Class: Correct deadlock, and infinite loop in setup()

(credit to Mitch Miers <mmiers@mmiers.com>):

setup() is attempting to initialize the hardware, and while doing so
is attempting to output some text via the console (and maybe mavlink
data).  The problem is, the output isn't going to complete once a
write buffer is full, because LinuxUARTDriver::_timer_tick() doesn't
perform work until _initialized is true.  So, what happens is,
setup() (and subroutines) call LinuxUARTDriver::_write(uint8_t c),
which loops waiting for buffer space to become available (once the
write buffer is full).  The buffer never gets space, because the
UART thread is waiting for initialization to complete before it
will write out data and drain the buffer, but that doesn't happen
until setup() returns (see AP_HAL_Linux_main.h).

Refer to https://groups.google.com/forum/#!topic/beaglepilot/dQlxse11JNI