Prevent memory leaks from not deleting windows

Some windows created via `newwin` have **never** been deleted, most notably the item information window (`game::inventory_item_menu`) and the targeting window (`game::target`) that appears every time one tries to fire/throw something).

Other windows have not been deleted in some circumstances (usually when the function is left early).

----

I was to lazy to evaluate all code paths and add a `delwin` call for each window, so I just added a wrapper based on `std::unique_ptr` that makes sure that the window is deleted when the wrapper object goes out of scope.

----

- `show_auto_pickup` and `test_pattern` windows were not deleted at all, only erased.
- `player::power_bionics` and `player::power_mutations`: one code path can lead to the window not being deleted at the end (action == "activating"), but also not being deleted inside the loop (the branch to `deactivate_*`).
- `iuse::water_purifier` one code path (when the player enters anything but 1, 2 or 3) returned without deleting the window.
- `game::opening_screen` there are some filesystem related checks at the top that leave the function, but the windows are created before that and were not deleted, similar the function is called recursively without deleting the windows.
- `set_scenario` some code paths could leave the function without deleting the window.
- `set_description` way to many code paths leave the function, some didn't delete the windows, no path deleted `w_location`.
- `w_hit_animation` was overridden with new windows, but never deleted.
- `Pickup::pick_up` some paths left the function without deleting the windows.
- `veh_interact::allocate_windows` the temporary window was not deleted.
- `worldfactory::show_worldgen_tab_options` not all windows wrere deleted.
- `worldfactory::show_worldgen_tab_confirm` had a path that did not delete the window.
- `defense_game::setup` - window was not deleted at all.
- `game::inventory_item_menu` window was not deleted at all.
- `iuse::firecracker_pack` window was not deleted at all.
- `snake_game::start_game` window was not deleted at all.
- `sokoban_game::start_game` window was not deleted at all.
- `game::target` window was not deleted at all.
- `worldfactory::make_new_world` window was not deleted at all.

Those errors should be fixed with this PR.