Pass by reference in state2's () operator
Add constructor to GameLoop, define values there
Use prefix-in/decrement for performance reasons
Remove incompliant (HACKING) whitespace
Add virtual destructors where needed
"Fix" initialiser lists
Remove unused variables

Button inherits selected_ from GuiElement. The others are not in use.
Disallow copying of objects that contain pointers

The implicit copy constructors perform shallow copies. Shallow copies
make exact copies of the original, and will bork if the pointer is
deleted. Disallow copying altogether.
Prefix class members with '_'
Don't discourage do-whiles so strongly
Try to explain our initialiser list style
Fix typo in HACKING