started implementing the datalog, and made some necessary changes to the instruments
changed datalog to use a singleton DataLogManager, so that it can use Qt signals and slots
changed singlton implementation, and changed close to stop
switch to using InstrumentsManager
formatting and minor changes to time_series.py
improved thread safety, refactored a bit, and added table creation
improved thread-safety of DataLog
implemented instrument logging
lots of changes

I didn't want to commit before it was error free. I realize now that
this was foolish, because now the changes have snowballed. I basically
completely rewrote the user interface, trying to make the interaction
between the GUI, Instrument, and DataLog more natural. I then started
implementing dynamic adding and removing of plots, as curves were added
or removed... And that still doesn't quite work. I'm going to commit
here, and then try to simplify things down to a point where I can
implement the important features one at a time.
lots of changes

See previous commit for the message I thought I was applying to all these
changes.
simplified InstrumentLogView to have a single plot
some renames, and moving data handling to InstrumentLogManager

- renamed Instrument.table_desc to Instrument.dtype
- renamed some private variables
- moved data handling from InstrumentLogPlotDataItem to InstrumentLogManager
-- InstrumentLogManager uses its own RingBuffer
added and implemented Datalog.requestInstrumentLog(instrument, callback)
renaming InstrumentLog, etc. to InstrumentDataLog
fixed small bug in dispatchInstrumentDataLog
curves start hidden, and with last 24 hours loaded from the DataLog
Merge branch 'iss24' into develop