add window restructure
remove cpp files
add list window restructure
window restructure is just an std::function
add restructure functionality to window

 * it can be moved
 * it can be resized
 * it can be moved and resized with one call
 * it restructures children after child creation
 * it restructures children when moved
 * it restructures children when resized
 * it restructures children only once when moved and resized