application & widget
try to fix dependency between widget and application

widget can freely depend on application, but not the other way, as
application should be considered as a lower module.

And, in order to avoid circular include of header files, application.h
is included individually by submodules in widget, instead of widget.h.