Expands ProfileManager and profile unit tests

Methods for deleting, creating, and listing
profiles. Also modifies get_profile by adding
an extra arg to specify whether a non-
existing profile should be auto-created.

Adds unit tests to test_profile.

Methods added:
- create
- list_profiles
- delete

Related to #632
Fix #654. Recording from USB Source Broken

Adds methods to generate valid default values for
plugins with multiple input sources.

Affected plugins:
- USB video source
- Firewire video source
- Pulse audio source
Fix #652 Show highest priority log message in status bar
Fix #655 Error when logging a non-string
Adds json schema methods to Option and Config

Config schema methods generate a json schemas based on
the config instance's options. Option schema methods
generate schemas based on the type of Option, its
default values, and whether its required or not.

Also adds schema unit tests for Config and Options,
and adds test_float unit test file.

Needed for #632
Fix #642 Add tests and refactor test_plugins

- Refactor test_plugins to use pytest
- Add new plugin tests
- Add FIXME comment for firewiresrc issue

Related to #619
Related to #484
Minor improvements to framework/test_plugins.py

:lipstick: Refactoring #642
Fixes error at startup for windows missing plugin

Moves get_default_device and get_default_source methods
out of affected plugin Config classes and into the
get_videoinput_bin or get_audioinput_bin methods, so
that no OS-dependent plugin code gets run at startup.

Fix #658
:green_heart: Fix spacing for inline comments
WIP: Fixes #576 High/Low DPI Adapting

The Qt UI would change the size according to the logical DPI of the computer
Only Windows and Linux have been tested. (Should also work on Mac but have not tested).
test mixin
improve the adapt_dpi method