Sort obs_data_items by name

This allows for easier comparison between two obs_data_t and it will make

const char *json1 = obs_data_get_json(data);
obs_data_t *data_ = obs_data_create_from_json(json1);
const char *json2 = obs_data_get_json(data_);

produce the same string in json1 and json2
(API Change) Pass data to get_properties when possible
Remove destructor from OBSPropertiesView
Move properties loading to OBSPropertiesView
Add 'update_properties' signal and obs_source_update_properties call

obs_source_update_properties should be called by sources when property
values change, e.g. a capture device source would use this when it
detects a new capture device (in case its properties contain a list of
available capture devices or similar)
Handle 'update_properties' signal in window-basic-properties
Add syphon plugin
Add syphon-client submodule
Use generated syphon names
Add LOG helper
Log potentially incompatible syphon sources
Silence syphon-framework warnings
Log when adding servers with empty app names
Fix check_description
Ignore empty app names

Fixes "[] " being listed after switching from the empty entry to any
other entry
Add button to launch SyphonInject (if available)
Fix API breakage
Remove some debug output
Remove unused get_defaults
Add automated* syphon inject support