Basically now various arguments that can (and probably should) be used during `CanvasBackend.__init__()` calls are passed in and parsed by each backend. This allows things like `glfw`, `glut`, and `pyglet` windows to be initialized with the proper size and title potentially. It also eventually will give us a way to pass context-related arguments, or things like whether the display should be double-buffered.