I had some time to consider this problem and I have come to some solution which I think can do it. It has some drawbacks but allows unregistering of all commands, mediators and proxies when the module unloads.
I have attached a source of the module test application. It simply loads 2 modules which both use puremvc.
In main application I have created ModuleMediator which controls loading and unloading of modules. As a helper class i have used ModuleFacade (it is located in the "util" package). ModuleFacade is a singleton which contains reference to the ApplicationFacade object (which is not needed because it is also singleton but it was kinda clearer this way for me). ModuleFacade controls registering and unregistering of modules.
Every module has a ModuleContext associated with it and it is available through ModuleFacade. ModuleContext holds all module registered commands, proxies and mediators.
The only thing that one have to do when creating a module is to create its startupclass which will initialize startupcommand.
In this command we have to register other things through the reference of ModuleContext object.
I'll continue on testing the solution and I would be glad to hear some comments.