Started to redo the python GUI for the APS boxes.  Dynamically load the ui
file so we don't have to compile it.
--CAR
A few more changes to get the GUI up and running again.
A large rewrite of the Python aps driver to mimic the Matlab version with init(),setAll() and run().  Push APS code out of the GUI and everything now runs but seems to produce funny shapes for pulses.
--CAR
Some bug fixes to actually make it work in 4-channel mode. --CAR
A few more changes to get single channel waveforms working.
--CAR
Bugfix for single channel triggering on python APS driver.
--CAR
Bugfix to allow decimal offsets to be entered in Python APS GUiGUIO
--CAR
Finish merge
Choose bit file name by serial number.

Essentially copied from the Python driver. Now enumerates serial number lists on
open.
Merge from develop
Bug fix where the python driver (and hence GUI) would crash when trying to
get the bit file name with no APS connected.
--CAR
Added the DAC frequency checks to the python driver.  Also added some
checks to the GUI to make sure the file exists for enabled channels.
--CAR
Got threads working for loading the bit file from the tool menu.
--CAR
Changed over to a threadpool to make theading different parts easier.
It seems that QRunnable's cannot recieve signals (they are for "fire and
forget threads").  This will trouble for
the run thread which needs to recieve the stop signal, so switch back to
inheriting from QThread and creating the thread each time.
Added a thread for the the PLL testing.
--CAR
Vascillated back to a thread-pool solution and completed the thread for
running.
--CAR
Disabled the tools menu items while running.
--CAR
Modified the python code to match the new HDF5 layout for APS files.
--CAR
Refactored the python code to work with the new HDF5 attribute layout.
H5Py is much nicer to work with than Matlab!.
--CAR