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
Fix #444 Separate recording logic from the concept of a talk/presentation

- Add filename parameter to load_backend function in RecordingController

- Change load_backend function in record.py to use default filename
  when recording to file or if no current presentation exists