Making backends more consistent.
A canvas starts out hidden for all backends.
Resolved weird viewport offset bug with the pyglet backend.
Wrote more tests for the backends. Also a bit of cleaning.
All backends now also emit the close event.