Set preferredMaxLayoutWidth based on an initial layout pass instead of hardcoding it

This method is somewhat less efficient as it requires a second layout
pass once the preferredMaxLayoutWidth is set on multi-line labels,
however it is much more flexible and generic and can scale to
arbitrarily complex layouts that would be very difficult to determine
the correct preferredMaxLayoutWidth value manually.
Merge pull request #5 from smileyborg/master

Set preferredMaxLayoutWidth based on an initial layout pass instead of hardcoding it