Added the plugin manager part of the Uaapi.

Note: Plugins are definied as dynamic libraries.

* The PluginManager is a singleton.
* It uses the DlLoader to load plugins.
* It has 2 methods: PluginManager::load() an PluginManager::unload()
  to respectivaly load and unload a module.
* The PluginManager::load() and PluginManager::unload() are templated
  on the type of plugin (PluginType).
* On load, the plugin manager retrives the init symbol and will call
  the routine with this symbol name. The routine *must* return a
  "PluginType*". This returned value will be returned to the caller of
  PluginManager::load().