Add test runner step (via zig build test)
Move constants to Rules struct

The new Rules struct is more flexible and handles changing certain rules
with the number of players.
Ask players to discard generators when max reached
Begin cleaning up some quality of life issues
Implement phase 5 and start looping through rounds
Allow the market to be refilled
Remove ArenaAllocator from tests in resource_market.zig
Keep track of what resources a player has bought
Don't prevent the user from not buying resources
Display current player money throughout gameplay
Improve resource market display
Continue memory clean-up with ResourceMarket and Game
Continue memory clean-up with Player
Fix typo in comment
Begin memory clean-up, starting with Grid

We're going to start being more careful about managing allocations and
cleaning up (although the plan is to still use an arena allocator).
Simulate phase 4: adding cities to player networks
Support diagonal connections multiple blocks apart
Display player constructions on map
Tweak vertical spacing in map
Display board map in terminal
Calculate connection weight between cities