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.
If the `close` is initiated by the Canvas itself, the `close` event wasn't firing, so I moved the `events.close` trigger to within `Canvas.close` itself.