Interpolate timestamps to reduce data transmission.

Caveats:
 - Only 1 in N triggers are sent to verify frame times against
 - Camera status updates are disabled if exptime < 500ms
 - Don't work with simulated camera
Display readout time to ms precision. Fixes #1.
Trigger simulated frames for subsecond exposures. Fixes #7.
Split reduction and preview threads into separate files.
Have reduction and preview threads sleep until needed.
Tweak simulated framedata to provide a target for reduction.
Workaround simulated timer failing on minute boundary.
Store module structs in a single place.
Fix unixtime <-> TimerTimestamp conversions.
Move frame saving into its own thread.

This prevents the UI from locking up at high framerates.
split process_framedata into save/preview.
Improve frame manager logging.
Rate-limit preview updates (defaults to 500ms).
Modify flat/dark countdown into a general burst mode.