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 a 4-byte fixed value and much easier to read than the generic block transfers. It might make sense to just try to directly implement it with a transfer() call.