Added PlayerDetails to encapsulate a player's ID, type and dimensions.

PlayerDetails consist of the player's type (physical or virtual) and dimensions (width and height). This information is passed on to spectators for them to accurately simulate the player.

* PlayerClient now needs to be constructed with PlayerDetails for the local player.
* Spectators receive PlayerDetails in their playerRolled and playerUpdate handlers.

This fixes #17 and #36.