On the development side of things, easy game states are now implemented into the engine. It works on a single function pointer. I could've done it millions of different ways, but I think this is the easiest. For example, you just go System::CurrentGameState = MainMenu; and then it's in the main menu.
I've also modified the sprite class a bunch so now it can display a single tile in the image instead of just having to show the whole image. There's also some delay features so it goes through it nicely. This'll make Invaders quite easy to implement as it would just go through the animations for you and you wouldn't need to worry. It also takes up less memory now and the FPS displays the true FPS as well now (thanks mozie).
I attempted implementing a GUI for menu systems, but decided to give up as I have better, more fun, things to do. I could also eventually find a GUI library or something to that effect. If anyone has a recommendation of some kind, I'd love to hear about it.