appengine/app: implement datastore cache layer