This is a new window to make sure there is a copy of the previous window's sessionStorage, and that they diverge after a change
Value for FOO is BAR
Logging from second window:
Value for FOO is BAR
Value for FOO after changing my own copy is BAR-NEWWINDOW
Value for FOO in my opening window is BAR


