I2c fixes

* depends on #1245
* uses pios_mutex instead of semaphore for locking
* fixes premature unlock in PIOS_I2C_Transfer()
* fixes excess irq disable calls in f3 driver
* fixes f3 diagnostics buffer mismatch
By logics ;)
i2c_adapter_process_auto() is only called from i2c_adapter_inject_event with irqs already disabled so no need to disable them again.
i2c_adapter_inject_event() is only called from within i2c irq and once from PIOS_I2C_Transfer(). I can't see a reason to disable the whole system's irqs.
Also the f1 and f4 drivers don't do it. It is probably a leftover from when i wrote the f3 i2c driver.
No need to be sorry. The review is exactly for this kind of questions.
Especially the i2c drivers have been painful in the past.