Update IMU driver code to use mockable interfaces
Describe the feature The IMU driver code makes calls to HAL and FreeRTOS functions directly. This means we cannot easily unit test this code. This feature will be implemented when all calls go through interfaces which have corresponding mocks, and unit tests have been written for the IMU.
Reason for request We should be able to unit test the code we write.
Timeline Does not need to be done by Dec 3rd qualification, but should be done before the new year.
Additional information It would be good to have a generic I2C driver, that works similarly to UartDriver in that different IO types can be specified, and the lower-level details are taken care of without the caller worrying much about them (assuming correct configuration). Such a driver could be unit tested and would separate the concerns about the MPU6050 library from the concerns about communication via I2C
Will build on top of #110 and #85
Update: the core logic for this is now more or less done. The tasks remaining are unit tests and runtime tests