[Placement] Several implementation fixes
[Placement] Several implementation fixes

* Don't expose the ISpacingListener interface in the public API of Placement,
it is an internal implementation detail and polutes the API. It has to
be implemented in the internal backend host class.
* In OnReallocate, take into account the size request mode, and use
GetPreferredWidth/GetPreferredHeightForWidth or
GetPreferredHeight/GetPreferredWidthForHeight to calculate the size.
GetPreferredWidth and GetPreferredHeight can't be used together.
* In the implementation of OnGetPreferred* methods, don't include the margin.
The base class already includes it.

steffenWi/xwt,directhex/xwt,lytico/xwt,mono/xwt,cra0zy/xwt,antmicro/xwt,hwthomas/xwt,mminns/xwt,sevoku/xwt,TheBrainTech/xwt,residuum/xwt,mminns/xwt,hamekoz/xwt,iainx/xwt,akrisiun/xwt