window: Don't require get_preferred_height/width to be run before allocate
gtk_window_get_preferred_width/height were retrieving the border and title height and then saving that into the private structure of the window. This was then used inside the _gtk_window_set_allocation and gtk_window_draw methods. If a subclass did not chain up for get_preferred_height / get_preferred_width (like Nautilus) then these values would not be saved and the allocation and drawing would not work correctly. This resolves this by spinning out the retrieval of that information into a separate function and using that every time the data is required.