bug fix in class system & rewrite filemanager

* I notice that we need to distinguish widget class definition and instantiation. Using foo = bar:new{} for definition will cause unnecessary instantiation on parent class. This PR added bar:extend method specifically for widget class definition.

* rewrite filemanager (now use the same code structure like readerui)