Changed micros() to work in interrupts

This is a possible fix for Issue #1301 where micros() can be a millisecond out when called in an interrupt.

I have given this fix several hours of testing in both interrupt and non-interrupt code and it has not given an incorrect result so far.