typo
* fixed non-trivial issue with replacePlaceholder logic - it was not taking into account deep child widgets and inlines (if they are enclosed into the top-level widget's placeholder)
* refactored Widget::_renderPlaceholder() to be more DRY