Simplify that WindowDataMap interface and make it safer

This gets rid of all the potential fail cases, and decouples the `Window` impl from `private` by removing `. get_local_data`.