Integrate with GCS - data persistence works now

In order to handle object initialization, we upgrade JsonGCS to a
version that allows request error handling. If we encounter an error,
we (maybe wrongly) assume that the error is a 404, because we haven't
created our cloud storage object, yet. We then try to create the object.

Once the object exists and has content, in order to show that content,
we need to redraw the view once it has been fetched. The view was
written under the incorrect assumption that the data would be
immediately available, and even with data, the view was empty.

We provide a callback registration API from the coffee logger
"model" layer, which the view uses to register a redraw function to be
called whenever the coffee logger successfully fetches data from the
datastore.