simplified dependency generation

- use "advanced" GCC options
API change: name IModule destructor "free"

- to make it usable from C++