Add Dependent Plugins + Refactoring

Add the hability to order plugins in the init phase also 
via dependent plugin declaration. Like required plugin
declaration it affects the topological sort algo. 
Plugins can now themselves declare them selve as 
required by other and thus be initialized before .
And the kernel in this case pass the plugin reference
for pre init().