Move WindowHeap delegate to own file
This makes easier for individual effects to personalize it without adding ad-hoc api in the main WindowHeap class. WindowHeap and WindowHEapDelegate are still quite coupled and thing can probably still be improved, but the code should be more readable already