Seperate I2C peripheral interfaces into destinct files.
Implement new state machine:
- call configure() after attaching() but before starting()
- call detaching() if attaching() failed.
Refactor I2C drivers to copy configuration structs 
instead of referencing them.

By forcing the user to use the constructor of the
structs we want to reduce user errors.
Rework Tmp102 driver to inherit from I2cDriver.
Adapters and Transaction Objects are now member variables.

If you need a special behaviour you need to inherit an inner class from
I2cTransaction and then pass this object to I2cDriver.
I2cDriver handles the passing of the configuration function.
Update Protoface example with current I2c interface.