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.
Bugs can easily arise if I expect _requestedSpace to be a pure function.  Before, _requestedSpace seems to get some answer from _iterateLayout and then return a formatted version of the layout, but now it seems that it sets an instance variable meaning that state has been changed.

This now means that if I call _requestedSpace arbitrarily just to get the _requestedSpace information, code downstream will need to account for the change in _calculatedLayout