VE-1448: Focus widget can target nodes

To test this, please see the comment in Jira: https://wikia-inc.atlassian.net/browse/VE-1448
I like the optimization - uniqueLayoutId. However I find it confusing that this method (and the other one: getLayoutForArticle) sometimes are returning object and sometimes nothing. Perhaps optimization could be done outside of those methods.
I have one more suggestion - which in my opinion could help make code easy to maintain and understand. Now you have one class (this widget), which is responsible for drawing "focus mode" and calculating it properties (for both modes: articles and node). How about splitting it a little bit, for instance you could keep this widget for drawing "focus mode" but then for calculating properties for different modes, you could have different classes (but implementing same interface) - configuration classes. And you could register those classes by symbolic names: "article", "node", etc.