Adding image support

- Also simpler organization of the `Window` struct
- Moved contents of `State` struct to `Window` and removed `State`
entirely (typedef and callback params)