context: implicit. todo: thread-local
viewport: lifetime is shorter or equal to gl context lifetime (yay!); constructing via factory (sounds ridiculous, but i have some cases for this in mind)
app: title and viewport factory
sys: osx implementation of all above
demo: dust fixed to work with new viewport/app stuff