Dto to value object

Changed BoardDefinition to value object. Removed FromStringBoardDefinition, BoardBuilder static method fromASCII now creates new instance of BoardDefinition based on passed string.

During the development I encountered two bugs. 
1. isAccessibleForTank now adheres to the javadoc:"Checks whether the tank may take a given position" so we are checking if the position is within the board and if it is not occupied by some other tank.  

2. There was also a bug in toString method of the BoardState - fromTop/fromLeft were mixed up and it resulted in rotated board without all tanks written to the standard output in SmokeTest