Fix #501 Warn user about losing new talk info

When the user switches from one talk to another, exits the talk editor,
or creates a new talk when the currently selected talk has unsaved
changes, a window comes up warning the user that there are unsaved
changes. The options are "Save Changes", "Discard Changes", and
"Continue Editing".

Fix #501
Close #605
Fix #622 New Recording UI

Overall new look for the recording UI. Made buttons persistent
and media buttons with custom icons. Added option to leave
record-mode and auto-record mode. Auto-record feature
has been moved to the menu. Spacebar now pauses and
unpauses recording.
Refactor and fix logic in recording api

Refactored and fixed recording api logic.
Implemented a shelve object so changes can persist more reliably and
elminate the need for server teardown code.
API tests now use pytest fixtures to create a baseline for
tests instead of xunit style setup and teardown methods.
Refactored and fixed logic of test_server.py tests.
Fix #588 Refactor plugins to use Config framework

Each plugin class that saves configuration
settings to the plugin.conf file now has its own
CONFIG_CLASS that extends the Config class
from the freeseer.framework.config.core package

Plugin options are loaded and saved from/to file
via the plugin's Config class.

Changes the YAPSY ConfigurablePluginManager to
simple PluginManager.

Refactored plugins:
- Jackaudio
- PulseSrcAudio
- Multiaudio
- DesktopLinuxSrc
- Firewiresrc
- Usbsrc
- Videotestsrc
- Picture-in-Picture (pip)
- Videopassthrough
- Audiofeedback
- Ogg Icecast
- Ogg output
- Videopreview
- RTMP Stream
Fix #617 Windows Desktop Region Record

Fix a small bug of in Desktop plugin for Windows.
Windows can record a region of desktop correctly now.