Read timeout exception

Not yet handled, need to determine when it can be thrown
Display working

- Time and distance hooked-up
- Added thread-safe GetState function to monitor. State is locked during
Monitor update, so any call to GetState will block on this. GetState
itself should be fast and not too frequent, so update should run very
close to expected rate.