Representing StrokePace as a Time

- Dividing by 2 on reading, so it's stored as seconds/500m.
Adding explicit defaults to commands

Some of the enums want to default to a something other than 0. Added
defaults to other commands to be consistent.
Fix sending CSAFE commands

CSAFE weren't being read if no PM3 commands were in the command set.
Adding explicit defaults to commands

Missed from previous commit of same title.
Monitor refactor

- Moved central command set management, sending and copying to state
into new StateReader.
- Monitor still handles connection status and provides external
interface.
Fix shutdown

- StateWatcher was blocking shutdown as window was no longer processing
its dispatcher.
- Action now sent to dispatcher with a timeout, so only blocks shutdown
for a fraction of a second. Prefer this option to invoking async to the
dispatcher, as it should ensure that we cannot dispatch faster than the
window can process.
Adding more items to display

Still very placeholder.