Keeping Master up to date with the changes I'm making to the client

Must keep the git branches in sync!

Changelog:
 - added IMenuPage class which provides an abstraction around the different available menu "pages" in the menu system.  Each Menu has its own implementation class, which makes things much simpler from a programming perspective.
 - started implementing one of these - the CLoginMenuPage class.  Needs much work, such as being passed in an irrlicht device so that it can do something useful (like, I dunno, rendering the Login screen perhaps?)