shell: Use Browser 'localStorage' directly, and require it

Every browser that has WebSocket support has localStorage support.
In addition the API is quite sane, so we don't need to wrap this in
our own abstraction.