Fix #427 warn user about erasing new talk info

- Add function confirm_add, called on addButton clicked

- Add helper functions are_fields_enabled and unsaved_details_exist for
  use in confirm_add

- Refactor clear_talk_details_widget to include category

- Add docstring for unsaved_details_exist function
Fix #461 move youtube upload into new cli
- Remove src/youtube-uploader
- Refactor YoutubeFrontend to fit new cli
- Refactor YoutubeService to fit new cli workflow
- Add subparsers to cli.py
- Document argument parameters, update docstrings
- Check oauth2 token file exists before upload
- Use positional arguments in cli.py
- Cleanup frontend/youtube.py
- Make methods static where possible
Make Travis fail the build immediately in some cases

Travis will fail the build if:

  - flake8 doesn't exit with 0
  - unit tests don't pass
  - documentation fails to build
Fix QTimer messages on unittest completion

Resolves the messages that appear at the end of unittest run:
    QTimer can only be used with threads started with QThread

Signed-off-by: Thanh Ha <thanh.ha@alumni.carleton.ca>
Fix #500 Database update function should update description and category

- Include description and category in update_presentation function

Closes #502
Signed-off-by: Thanh Ha <thanh.ha@alumni.carleton.ca>
Fix #508 Change Add New Talk button to a command button

- Move 'Add New Talk' button from TalkDetailsWidget to CommandButtons
- Connect new 'Add New Talk' button to confirm_add

Close #509
Signed-off-by: Thanh Ha <thanh.ha@alumni.carleton.ca>
Remove unnecessary comment
Remove Awkward Stretching of Config Widgets

When the config tool's window size is stretched, the components stretch
awakardly (ex. 4 lines will be evenly distributed over the entire
height of the window). This commit fixes this by adding a stretch
factor of 0 to the main layout.

Close #518
Related to #411
Signed-off-by: Thanh Ha <thanh.ha@alumni.carleton.ca>
Fix #512 CLI config reset functions no longer work

Changed optional arguments --reset, --reset-configuration, and
--reset-database to become positional arguments underneath a reset
subparser.

Options are now "all", "configuration", or "database". For example:

    freeseer config reset all
    freeseer config reset configuration
    freeseer config reset database

Added unittests for reset, reset_configuration, and reset_database
functions from util.py.

Close #515
Fix #465
Signed-off-by: Thanh Ha <thanh.ha@alumni.carleton.ca>
Reorganize imports and remove commented out code

Signed-off-by: Thanh Ha <thanh.ha@alumni.carleton.ca>
added mock to dev_requirements.txt