Initial GUI implementation.

TODO:
  * process all loaded data into a bunch of QVector<double>
  * connect radio checkboxes with plot update code.
  * connect filename selector to plot update code.
Implement file and checkbox plot updates.

Loading the data and converting it to QVector<double> is done using
QtConcurrent framework, and is done at start up. This makes looking at plots
super fast.

TODO:
  * graphs need to be colored consistently, currently they are all blue.
  * pdf output looks pretty crappy, it embeds the default font of the terminal,
    which in my case is DejaVu Sans. I'm not sure if it is possible to change
    this. So this might be a serious limitation of utility.
  * Maybe output raw data for selected plots and selected time range, this
    could then be using in tikz/pgf to generate native plots. This would
    probably be pretty simple to implement, just need to figure out what format
    the data needs to be in.
  * Add lineedits to specify time range explicitly, would be useful for plot
    generation.
  * Add linedits to specify vertical range (on left and right axes).
  * Add ability to right click on a graph and change which yaxis it is plotted
    with respect to.
Implement text data format for use with TikZ/PGF.

Selected data fields are now output in text format.

Automatically adjusting of axes, and synchronization between spin boxes and
plot is mostly consistent.

TODO:
  * Implement colors for each line.
Add meta data class.
Add a decimated output with 1/4 the samples.
Remove useless plot cruft.
Refactor time series code, add tab widget for fft plot.
Implement DFT amplitude plot.

For the selected fields, and the selected time range of interest, the DFT is
computed and the amplitude is ploted. Lots of polishing on the amplitude plot
is needed:

  * selecting lines doesn't highlight them in the legend.
  * reset of axes only works on time series plot
  * you have to switch back to the time series plot if you want to add fields
    for which the DFT is computed.
  * COLORS NEED TO BE IMPLEMENTED!
  * data output needs to be implemented so FFT plots can be made.
Add random line color.
Update FFT plot when file or fields change.
Make slots for plot handle both time and fft plots.

Also removed some unused handlers.
Add code to save FFT data for TikZ/pgf plots.

This code really needs to be refactored and cleaned up but I don't have time at
the moment to do it.
Adjust filename suggestion to match time range.

This commit also fixes a segfault that occured because the magnitude and phase
data was not being cleared and resized in the same was as the complex FFT data
was.
Refactor file writing code into write_file method.

Also change the default directory and file name extension.
Add momentary switch state to plottable fields.

Also change filename extension from *.dat to *.txt
Connect signals & slots for FFT plot pan and zoom.
Remove mean of signal before computing FFT.
Implement axes reset for FFT plot.

Need to implement vertical axes reset on FFT plot to only use the selected
frequency range.
Implement proper vertical axis reset for FFT plot.

Now the vertical axis limits are set based upon the minimum and maximum FFT
magnitudes over the currently selected frequency range.
Compute transfer functions from stter torque.

FFT of each selected signal is scaled by the FFT of the steer torque to
generate Bode plots.