Big rewrite: Upload gifs to blobstore and process them in a delayed task, communicating frames to the user via Channel API -- this may have gotten out of hand