Make read of SleepHandler::lastOverflow atomic

Since it is a multi-byte value and is written from an ISR, it would be
possible that the ISR triggers halfway through a read, causing the read
to be garbled. This only occured when actually reading the uptime
exactly the moment the timer overflowed (every 19 hours), but it needs
to be fixed nonetheless.