SMBus smart battery driver

This adds support for reading the voltage of a "smart battery" using I2C which is mostly compatible with SMBus.
The current is supposed to be accessed via a "block-read".  So with a block read, the first byte received back holds the number of bytes that will be returned.  So actually 5bytes will be returned with the first one being the length which will always be 4.
There are other registers that are also accessed in this way including some that hold strings so this is why the block-read method was added.  Sadly I haven't been able to get it to work correctly on the Pixhawk even though it works fine on the AVR.  More debugging required.