Fix interrupt safety & use SPI transactions

Details here...

http://forums.adafruit.com/viewtopic.php?f=19&t=62219&p=328449#p328443