Added a texture manager

- The texture manager loads images
- The texture manager creates a texture from an image and a source rectangle
- The texture manager caches the results