Fixed ugly bug with not-waiting for the #deferred block to complete before considering widget template rendered.
Refactoring:
* "Futurized" almost all remaining internal logic of the core
* removed some unused code
* added comments with descriptions to the most tricky core methods
Refactoring:
* merged and renamed Widget::injectAction() and Widget::_injectRender() into Widget::inject()
* cleaned up Widget::browserInit() a little
Little refactoring of StructureTemplate.
Added Future.catch() to conform JS standard "thenable"
Future improvements:
* fixed error handing in Future.require() in case of errors caused by the Future callbacks
* added new Future.try() - synchronous to Future converter to conveniently compose Futures with synchronous functions that throw exceptions
improved DomInfo debugging support
and refactored Behaviour::render() a little
Added Future::catchIf() syntax-sugar method
Implemented protection from performing several page transitions concurrently
Big Widget::setParams() refactoring
* prevented performing setParams() concurrently with widget template rendering to preserve context consistency
* because of the previous setParams() become asynchronous
* setParams() rejects with the special error if it's called for the sentenced widget or it is collapsed due to overlapping with subsequent setParams() call
* introduced custom exception types
Merge branch 'master' into transit-queue
Merge branch 'master' into transit-queue