Board Encoding and syncing

Board objects can be sent over the network and synced to the clients
using them.

Board objects now implement the IStateEncodable interface.