Setup for a png-based ipynb app backend

This is just the app stuff, but I think already has the rest more or less finished. If we combine the two, we have an actual IPython backend!

One note: this backend should preferably set capabilities for position and size to False. However, the current system does not really allow that, because the Canvas *always* sets position, size, and title. We probably should make the canvas "capability aware". But I leave that for another PR.