This implements a ringbuffer that is used to decouple the raw websocket
connection from the messages that the game handler handles.
There is still a problem:
Test_MessageBuffer_GetWaitsForNewDataIfOldOneWasAlreadyGotten fails
because buf.Get() returns an old value instead of waiting for a new one.
This must be fixed.
Additionally, the Insert() and Get() methods must be thread-safe at
some point. But since Get() blocks when there is no data, there would be
a deadlock if I see this right.
In order to simplify special moves like en passant or castling for the
client, we want to deliver the board state after every move (and not
only start square and end square).
With PGN we can encode a chess position into a string.
This commit implies changes to logic of the pieces' shortnames. This
will break the client/server connection (at least for promotions).