Massive overhaul of the Dual Motor Driver software library

It now behaves more like a typical I2C device, with data registers that
can be read and set