Move the b32nibbler utility to the spiderOakApp, so it can be used in
various places.

Also, implement another utility for organized, transparently-JSONified
access to local storage.  This will be used for retaining visited share
rooms marked to be remembered.
Implement a distinct model for the visited share rooms, to hold the
attributes that are going to be saved and restored from local storage (when
retained).

We provide for tracking changes to the share_id and room_key, but that is
not necessary - they should never change, once set!  I'm going to remove
the code after checkin - the method is worth remembering.

Move ShareRoomModel.js to ShareRoomModels.js, since we have more than one.

Along with other stuff I'm about to checkin, this bring us to a high
watermark, with the ability to add and descend into an arbitrary share
room. There is a lot of infrastructure still pending, like an add form,
preserving to and restoring from local storage, etc, plus the approach is
not quite right - we need to do an initial fetch of the underlying share
room, to get the attributes for display - but we're on the right track.
Base the VisitedShareRoomsRootCollection on the
new VisitedShareRoomRootItemModel, and implement a suitable urlBase.  (It
will need to be changed to use a application parameter, rather than a
literal.) Organize for eventual saves and restores from local storage.
Use the VisitedShareRoomsRootCollection for the visited share rooms.
Encapsulate the details of loading message hiding in the respective share
rooms view.