Prototype for load/save comm link settings using new QGCSettingsGroup class

INCOMPLETE + I hope the diff works. 

Using a class to help serialize groups of data in an organised way.  The QGCSettingsGroup is inherited rather than instantiated which leads to multiple inheritance :-(

Changes:
Only the UDP link class is implemented so far.  Serialization is not done in the others.
Some changes were needed in MainWindow and QGCApplication.

Issues:
Multiple inheritance-  Is this ok?
Where to put the class factory to support link class generation during settings load.
Should the link reload be a behaviour of MainWindow or Application?  What happens with multiple main windows?
Does this model fit other groups/classes that need to be stored in settings?

Not done:
Delete old settings name when link name is changed.
Store/recall protocol map and reconnect
Per link auto reconnect

I agree.  My intention was that the parent creating the link would set the path or there would be a pointer to the parent.  At some point I lost my way and hard coded it just to get it going.
If every QGCSettingsGroup has a pointer to a parent QGCSettingsGroup then it can always construct the full path information.  This might be a good way to inform the parent group that its group name has changed but that might run in the wrong thread.
I also considered testing using the parent QObject as the parent QGCSettingsGroup but that the consequences were too difficult for me to predict.