Imu Controller Spike

This is really just meant to be a spike to try some things out for the IMU/Accelerometer with separated controllers. I haven't extended it to Temperature or Gyro because I wanted to get some feedback first.

There is a controllers service which is responsible for mapping controllers on boards. There are two controllers implemented in this pass: AnalogAccelerometer and MPU6050. Thy both expose data.accelerometer[x,y,z] data points, but they get the data in different ways.

I tested this with an analog Accelerometer as well as with the MPU-6050.
@rwaldron said:
> Don't change any of the tests, only add new ones. The existing tests should all pass, exactly as they are written.

Perhaps I am missing something, but a rule like this can be extremely limiting.  It makes refactoring code difficult while maintaining unit-level coverage.  If the component no longer depends on the IO layer, then it doesn't feel right to continue to mock out the IO layer and require a specific controller implementation.  I agree that the controller tests need to be added (which hasn't happened yet) but keeping the tests as-is would change the nature of the tests from a unit test to an integration test.  As long as the same data is being passed to the component, and the same assertions are maintained, what does this rule protect against?