added timeouts to all the polling functions in the i2c code. hopefully if something hangs this gets it going again. timeouts are not added on the data transfer portion, only on the initial setup portion. need to test if this is good enough.