PFW: Enhance subsytem libraries load mechanism

BZ: 24093

If a subsystem library depends on another one, the libraries have to be loaded
in a predefined order.

the previous recovery mechanism on PFW was: When a subsystem library does not
load because of a missing dependency, it tries to load all the other subsystems
before trying one more time to load the failing library.

Unfortunately, Android linker does not allow several try when loading a
library.

In consequence, this patch implements a new mechanism to load its subsystem
libraries.
For this new mechanism, the PFW will load the subsystem libraries in the order
they are disposed in the file ParameterFrameworkConfiguration.xml

Change-Id: I39b97e33c77a6b4392c3813cd3d780e10e3b60f8
Signed-off-by: Guillaume Denneulin <guillaumex.denneulin@intel.com>
Reviewed-on: http://android.intel.com:8080/35903
Reviewed-by: Barthes, FabienX <fabienx.barthes@intel.com>
Tested-by: Barthes, FabienX <fabienx.barthes@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
diff --git a/parameter/SystemClass.h b/parameter/SystemClass.h
index 512c5ec..ead5565 100644
--- a/parameter/SystemClass.h
+++ b/parameter/SystemClass.h
@@ -31,6 +31,7 @@
 #pragma once
 
 #include "ConfigurableElement.h"
+#include "SubsystemPlugins.h"
 #include <list>
 
 class CSubsystemLibrary;
@@ -42,7 +43,8 @@
     virtual ~CSystemClass();
 
     // Called from parent before actual init
-    bool loadSubsystems(string& strError, const vector<string>& astrPluginFolderPaths);
+    bool loadSubsystems(string& strError, const CSubsystemPlugins* pSubsystemPlugins);
+    // Subsystem factory
     const CSubsystemLibrary* getSubsystemLibrary() const;
 
     // base
@@ -62,7 +64,7 @@
     // Plugin loading
     bool loadPlugins(list<string>& lstrPluginFiles, string& strError);
 
-    // ref only
+    // Subsystem factory
     CSubsystemLibrary* _pSubsystemLibrary;
 };