FIX: Fix initialize events

This ensures that we always get `initialize` and `close` events. Before some backends had these events, others didn't. Now they all should. Ready for review/merge.

Closes #331.
I don't love this solution, but I'm not sure how else `Canvas.close()` would trigger the `events.close` in most backends. Do you have an idea?