implement our own anti-aliasing

WebGL does not support fine-grained control of antialiasing. It's an
all-or-nothing scheme. Either the browser initializes the render context
with antialiasing, or it doesn't. The rules are not completely clear to
me. Even if the scene could be rendered at interactive frame rates, on
some browsers antialiasing is just disabled. When antialias is set to
true, and the browser does not support it, we instead increase the
size of the GL context by two and apply a CSS scale transformation.