Add events
Use events for graphics context initialization
Miscellaneous clean up
Refactor events

Removed the observer and observable classes. Added an event class that
can be subscribed to.
Add parameters for event callbacks
Merge branch 'feature/events' into develop

Closes #19.