Split the option parsing from the App class

This allows us to add a benchmark option and then use that option to construct
the application class and run it a specified number of times and benchmark the
result.
Start spectrogram gstreamer element

Based on the 'spectrum' element from gst-plugins-good, but renamed.  Will morph
over time.
Remove message posting functionality

Instead of posting the frequency spectrum data as a message on the bus, we will
be outputting it as video content.
A very rough but working spectrogram visualization
Further improvements to spectrogram gst element
add 'sonogen' utility
sonogen: add ability to draw a grid
Draw values on grid axes
add short 'f' option for max-frequency
Add debugging statements back in

since g_debug no longer prints by default (G_MESSAGES_DEBUG must be set),
re-enable these debugging statements
Allow using file paths in additions to URIs
Help text cleanup
remove unused member variable
sonogen: more enhancements to help text, etc.
sonogen: add --duration option

Add ability to specify the duration in seconds as opposed to being implicitly
specified by a combination of --width and --resolution.  Now only 2 of --width,
--resolution, or --duration can be used at once.  If all three are specified,
--resolution will be ignored.
sonogen: terminology - threshold -> noise floor
sonogen: pass options as a struct

Rather than declaring equivalent member variables in both the (former)
AppOptions and App classes and passing the options one by one to the equivalent
App member variables, just pass the whole ball of options as a struct.

We can't just pass the OptionGroup to the App class because apparently copying
the OptionGroup class is illegal and causes a segfault on destruction, so just
create a little container struct to hold the option values.
sonogen: paint sonogram on top of the grid

Draw the sonogram with alpha (according to intensity at the particular
frequency) and paint it on top of the background grid rather than painting the
grid over top of the sonogram.
sonogen: draw 'level' below sonogram when enabling -g
use g_error rather than g_printerr