Changed how the Ranks work, they are now singleton class (should keep
memory usage down), they ask their next ranks if they can rank up.

For the Trader and Squire (and anything that comes directly after
Peasant) there needs to be a data element that is set in the PlayerData
to signify that they want that path, this should make the logic of
getting out of the base Peasant Rank easier in the long run

TODO: add a method to get the next Rank that a PlayerData qualifies for