Fix layout engine issues.

Layout engine will not stop iterating after each component is
satisfied with offered space. Existing algorithm leaded to situation that offered dimensions were smaller than given one, which in some cases like horizontal labels resulted with strange layout (empty space).
Iterative algorithm will finish only after 5 iterations or if there is
no space left.

Category axis while determining if it fits within offered space, checked only text. `Width/Height` is not just dimensions of the text, but also marks and padding.

Close #936, #1207.
How much control over the layout do we want the user to have?  I'm really not sure we should expose this idea as an API point.  Also I'm not a fan of the naming convention here for the setter.

When I see isLayoutCalculated(boolean), my first instinct is that the function will use the argument I gave it and then use it to output a boolean variable, which is not what it does