Make sure children of a widget are always correctly reallocated

The reallocation of the children of a widget is not done anymore in the
default implementation of the OnReallocate virtual method, it is now done
after invoking that method. This ensures that Reallocate is called on the
children after they got their new positions. This avoids common mistakes
when placing widgets in a Canvas, where base.OnReallocate was sometimes
not called or called in the wrong order.