Huge refactor of previous implementation.
1) try optimize html generation(reduce DOM manipulation, introduce
render workbench stage)
2) change initialization of plugin
3) adjust all viewer implementaion to support render stage
4) change initialization of workbench parts(pass WorkbenchEnvironment
reference)
5) add init stage for whole workbench and plugin(init stage is used for
event registration)
6) provide start event implementation