Updated Grid class

- Added a method called isPositionInBounds to check that a given
position is valid wrt the grid

- Added a method called getNeighbourPosition to get the meighbourhood of
a given position wrt a given Direction
Created InvalidPositionException class

- this exception is used to propagate generic exception related to
invalid positions (unmarked or out of bounds)
- PositionOutOfBoundsException is now a subclass of
InvalidPositionException
Created Direction Enum

- This enumeration allows to distinguish direction on axis (4 axis, 8
directions)
Updated Axis

- Axis now defines two methods allwong to distinguish a primary and a
secondary direction (used to mark lines)
Minor refactorings in Square

- the method setPartOfLineByDirection has been renamed to
setPartOfLineByAxis
Rewriting of line searching/marking algorithms

- also created a class called PlayerInfo that eases retrieving player
number and mark every time a new turn starts