making progress on the I2C handler

I have modified how the I2C handler is called and what it's
responsibilities will be.  I decided that, for simplicity, it is better
to integrate new I2C functionality, such as communicating with a
particular pmod, into the I2C handler instead of making it a separate
handler.  The initializations got too messy when I tried to figure out
how to make sure that initializations happened in the right order.
modified the I2C handler to handle timeouts

Rather than hanging forever in while(...) loops, as it did previously,
the I2C handler now makes use of the delay timer to figure out how long
it has been hanging and to jump out of loops if it has stalled for too
long.

Also modified my delay timer to be a class.
modified button_ISR_LED to use framework delay

Modified my button_ISR_LED project to use the delay timer in my
framework instead of the one in the project, then I deleted the delay
timer in the project.