I2C fixes

This ensures that the I2C queue doesn't proceed until any pending STOP symbols have finished.

Also introduce an abstraction to make accessing I2C register interfaces slightly less painful.