Cleaned up Ogre::Root and fixed some issues with the home directory code

I wanted to get rid of the ifdef spam that was starting to show up outside
the classes so I rearranged some of the code to look a bit cleaner.

Fixed an issue with getHomeDirectory on linux to give back the directory
of the hardwar settings folder for that user rather then the users
home directory.