Bugfix crashed when trying to start from cli
File "~/Source/spreads/spreads/workflow.py", line 195, in _add_to_cache
    location = workflow.path.parent
AttributeError: 'NoneType' object has no attribute 'path'
Add support for saving settings in gui and setting the default values from config file instead of just from default values
Saves to global config file (in ~/.config/spreads/config.yaml)
Fix the interactive renaming of driver -> device
Change using Tabs instead of combobox. More user friendly in my opinion.
When there are comboboxes to change view I often tend to select the wrong one
Merge remote-tracking branch 'upstream/master'
Load plugins after we set them so configure can find them in the future
Merge remote-tracking branch 'upstream/master'

Conflicts:
	tests/conftest.py
Changes to make the tests run flawlessly (with upstream check in conftest.py)
Remove redundant row
Sub seconds check doesnt work on all filesystems, it gets round to a second
Use 1s delays to ensure we dont gets rounded to the same second
A racee condition between event adding to cache and rows below can make this workflow to be added twice
Fixes: https://travis-ci.org/DIYBookScanner/spreads/builds/29399468
Simplify the Gui save settings a great deal, on input from jbaiter
Take better advantage of buildin capabilitys from config module
Bind on_created event at class creation time to keep callback around
Initial support for metadata
Merge branch 'master' of github.com:mumme74/spreads

Conflicts:
	spreads/workflow.py
chdkcamera: Stub out finish_capture to circumvent CHDK bug (closes #114)
Wait for background threads to finish before remvoing worker pool from workflow
web: Simplify configuration widgets

- Ditched backbone.validation extension
- Don't work directly on backbone model, instead set configuration on
  the model before saving
web: Replace vast majority of bundled vendor files with node dependencies
web: Fix behaviour in web UI when there are no pages on a workflow