gui: make resources type safe

- add string, int, color and resource loading helpers
- use typed resource classes, and some cleanup in loading code
- remove abstract GetResource() to enforce type safe access
- add height and width query methods to resources and use them
- minor cleanup
- simplify LoadPlacement

Change-Id: I9b81785109a80b3806ad6b50cba4d893b87b0db1
diff --git a/gui/pages.hpp b/gui/pages.hpp
index b042c0d..31ccadb 100644
--- a/gui/pages.hpp
+++ b/gui/pages.hpp
@@ -17,12 +17,15 @@
 	TOUCH_REPEAT = 4
 };
 
-typedef struct {
+struct COLOR {
 	unsigned char red;
 	unsigned char green;
 	unsigned char blue;
 	unsigned char alpha;
-} COLOR;
+	COLOR() : red(0), green(0), blue(0), alpha(0) {}
+	COLOR(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255)
+		: red(r), green(g), blue(b), alpha(a) {}
+};
 
 // Utility Functions
 int ConvertStrToColor(std::string str, COLOR* color);