Added Attribute base class to define major player attributes.

There is a calculate method that will be overridden by the inheriting classes.
Created an Attribute subclass for each major attribute.

I did a little cleanup, and moved the get_happiness function to the Happiness class. I left get_happiness there for now, since I need to remove all links to it.

I still haven't quite figured out how all of this will work, since calculate needs to be called before an item is referenced. Maybe defining a get_value() function for the Attribute class?
Added Attribute.get() to call calculate and return the value.

I also removed the calculation of the happiness attribute, as this value will now be set directly if an item affects it. Knowledge and money will be calculated in other variables/Attribtues.
Created Money class as a subclass of Attribute.

For this, savings, 401k, and investments would be examples of minor attributes.
Moved major attributes to a dictionary contained in self.attributes.

This will make it easier to go through each attribute when an item is used (and if we decide to add more later).
Added set() method for Attribute.

As described, this can set the value outright, or change it by a number (called delta).
Fixed the use_item() method to use the Attribute class.

This still needs to be tested.
Had to change the way that the Attribute.__init__ was being called from the subclasses.

I have no idea why I needed to do this, I'll have to look it up later.
Fixed some areas to correctly use the new attributes dictionary.

Particularly in the game class, I had to change how money was being taken. It is not very intuitive for the programmer, but I think this will be more expandable down the road (which is yet to be seen).

I also changed the few items currently in the map to use just the major attributes, and tested with the book in the library.
Adjusted costs in map file to use negative numbers.

This should be more intuitive when making the map file, so any negative value will take that away from the attributes (time, money, happiness) and positive values add to it.

I also used abs() when checking if the player has enough money or time. I did NOT change how time works (or is defined in the map file) yet, but that may move to a major attribute to work like everything else.
Fixed course actions to use new attributes dictionary.
Figured out why I couldn't call super in the subclasses before.

I needed to have the base class inherit from object. Now it works just like the Menu classes and subclasses.
Added Time class and added this to the attributes dictionary.
Fixed all game commands to use the Time attribute in the Player class.

This will be better in keeping this with the player rather than a variable in Game, especially for multiplayer games down the road.

I changed the order of checking for valid parameters of a command before checking to see if there was enough time, which makes more sense, and is necessary.

I also changed the map file to show negative values for time. This also means that using an item can use time now by simply putting it in the effects list for that item (rather than a code change).
Merge branch 'time_as_major_attribute' into add_major_attributes
Fixed some formatting so numbers appear in menus as positive.
Changed the Player.info_display() to build dynamically from the attributes dictionary.
Fixed the debug message for player attributes after an item is used.

Its a bit of a tragic debug message, but it does work. The reason it was a problem is because the Attribute class __repr__ method returns the attribute name (which is used elsewhere, so this shouldn't be changed without a lot of thought and code searching).
Merge pull request #81 from ChodeGames/add_major_attributes

Add major attributes

Fixes #76