Refactor game to make more use of currentPlayerId

The score screen in particular had to pass a player id to make any
changes to the players score. This seemed strange because the game
already keeps track of the current player.
Automatically foul if (points = target-1)

This is because the minimum score is 2, so from (target-1) you cannot win.
This will also automatically go to the next player.
Extract a Player factory and store scoring history

Instead of maintaining the current score, it appends a scoreEvent to the
players scoreEvents history.
Then when asking a player for its score, it will iterate over the
history and calculate the current score (each time).
When a new game is started, this history is wiped so it doesn't continue
to grow forever.
This event sourcing model should make an 'undo' feature (#6) very easy!