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.