[WPF] Fix image buttons

Don't directly set the image as a content of a button since then the image
will fill all the available space of the button, and that's not what we
want.
Fix preferred size calculation issue

Cached heights should only be reused if the reference width has not changed.
The same for cached widths.
[WPF] Fix preferred size calculation bug

Always invalidate the desired size of a widget when calculating the preferred
size of a widget. XWT already does preferred size caching.

The preferred height for wrappable labels is now 0, so they will take just
the available space.