[windows] Use a custom window procedure.
[windows] Remove entries from a window's property list before it is destroyed.
[windows] Note that the global atom table should be used.
[windows] Check if setting the window property succeeds.
[windows] Don't assert that the instace returned from GetPropA is non-NULL.

It will always be non-NULL, when we care about it. The only times it isn't is during window creation (via CreateWindowEx), but we don't care about the four events generated: WM_GETMINMAXINFO, WM_NCCCREATE, WM_NCCALCSIZE, and WM_CREATE.