Refactor plus fixed I2C bit shift during read

Was shifting the read bits one extra time left.  Still having some
timing issues causing inconsistent communication.  Not sure if it is the
ACK part or maybe the START repeat condition.  It doesn't really look
like it is the TSU_SDA time (tested this by adding clock stretching
SCL_low to allow more time between releasing SDA and SCL).