Resolve "[I2C] Not optimal driver for multi-threaded environment"
Closes #107 (closed).
The approach to solve the issue is to move the logic from the thread to the interrupt. In this way, the thread is put to sleep at the beginning of the transaction and will be waken up only after the transaction is finished. Doing so, we limit the thread descheduling to only one every transaction (instead of one every event waited).