Adding LSM303DLHC Magnetometer

This commit also makes the Gyroscope, Accelerometer, and Magnetometer
types interfaces which different hardware abstractions must implement.