Add tests for ModuleToken class

Add empty ModuleToken class.
Add attributes to enum AttributeName.
Add test cases for different kind of modules.

DOES NOT COMPILE:
Still missing methods in UnitToken and BoardToken classes.
Add class structure of decorator pattern

Add abstract Module class.
Add abstract Upgrade class to act as a decorator.
Add list of upgraded tokens to ModuleToken class.
Change tests appropriately to new structure.
Fix tests for ModuleToken, hide upgrade/downgrade

Check if pointer to attribute is not null.
Make upgrade and downgrade methods protected.
Remove those methods from Module and ModuleToken classes,
leave them only in Upgrade and its derivates.
Add empty specific upgraders

AddAttributeUpgrader
ChangeAttributeUpgrader
Changed class name Upgrade -> Upgrader

Add method addAttribute() to BoardToken class
Finish AddAttributeUpgrader

Change constructor of Upgrader class to call proper constructor of
BoardToken class, therefore must add access method for attributes.
Add methods for removing attribute from list.
Implement ChangeAttributeUpgrader

using try-catch hack to check type of the object.
Change try-catch hack, make army an attribute

Change try-catch hack to dynamic_cast.
Make BoardToken destructor virtual.
Fix ChangeAttributeUpgrader implementation.
Add ARMY to AttributeName.
Change BoardToken::army to Attribute*.
Add ARMY to list of attributes.
Fix segfaults while accessing null-pointers
Make tests run

Fix attribute upgrade and downgrade to take into accout army attribute.
Tweak tests - make initial initiative higher to prevent from downgrading
it to 0.
Fix ChangeAttributeUpgrader to upgrade and downgrade edge attributes
only when particular edge is not empty.
Change method of upgrading attributes

Add methods upgradeBy/downgradeBy.
Add methods upgradeTo/downgradeTo.
Add ChangeArmyUpgrader.
Modify tests appropriately to reflect changes in API.
Add activeEdges field in ModuleToken class
Change module API

first check if current global edge is connected with active local edge
of module, then call addBoardToken method.
Delete duplication of attribute army.
Create added attribute inside upgrader, instead of passing it from
outside.
Merge branch 'feature/ModuleTokenClass' into develop