Minor infrastructure cleanup.

GStreamer bus events are now handled in a style consistent with SoundFun. This should make it easier to get bus messages from a plugin.
Only some GStreamer bus message events are implemented at this point, more to come later.

Base class Pipe has been made for constructing top-level GStreamer pipelines.
Recorder class has been added for handling recording without touching GStreamer.