HMC5983 I2C driver

Added HMC5983 I2C driver. The driver is almost identical to the HMC5883 driver, but it has to set a bit to enable the temperature compensation and there are a few other options. Also updated the SPI driver (which doesn't seem to be used by any target) to support additional orientations.

I added this to support an external HMC5983 compass on the Brain, could be used in any target that supports and external I2C compass.
is this safe if the exti is not configured and then the semaphore isn't created?