Change `Image`, `Text`, `Sound` API

- Pass structs by value
- Move draw attributes to structs
Changing `total_ms` to `elapsed_ms`
Add ability to change `Text` width and height
Add ability to dynamically change `Text` msg
Add ability to set `Text` color
Add ability to set `Window` background color
Move `fps_cap` and `vsync` out of S2D_CreateWindow
Make `sdl_error` available everywhere
Explicitly set OpenGL context
Comments and clean up