start on dev card unit tests
add DevCard model and logic to determine which are playable
ensure no more than one card can be played per turn
ensure dev cards get marked as played
refactor

metaprogram dev card calls to prevent duplication of before/after logic
implement #play_monopoly
implement #play_year_of_plenty
implement #play_road_building
handle edge case with road_building

it's not possible for a player with 14 or 15 roads already built to get any more out of a road building card. to prevent the user from getting trapped in a state with no possible actions, we have to check before we lock ourselves into the road building state.

interestingly, it might be possible to _still_ get caught in a bind if more roads are available, but the active player is totally boxed in and has no legal spots on which to build roads. not yet sure how i should handle that.
implement #play_knight
prevent sporadic test failures when desert randomly spawns where we're about to rob
initialize board with dev cards and allow players to buy them
UI for buying dev cards and playing knights/road building
prevent dev cards from being played on the turn they're bought
UI for playing monopoly and year of plenty
remove longest road checking responsibility from Board
add longest road and largest army calculation to Game
remove unused block
whitespace
DRY; don't double-store points information on player

points will work better as a method, because it can always be inferred from the state of the game.