Optimizer

Added Header file and implemented first necessary parts for the
Optimizer. The Idea is the following. We simply have a struct called
Genes embedded in the Unit-class, that contains two arrays containing
all parameters that are necessary to compute the forces caused by enemy
and friendly units. The functions that compute these forces dependent on
the Genes of a unit are implemented in the Optimizer-Header. In the
optimization these functions can be assigned to the mEnemyFunc and
mFriendFunc member variables of the Unit class. Then an objective
Function shall compute the effectiveness of the Unit with the its
current Genes, after running Microsimulations where it has to fight
against different types of enemy Units.

Note about the Genes struct:
In my opinion we need at least one byte for one type of the parameters
and two byte for the other two types (type one are weight factors of dps
and resources, type two constants and type three distance offsets), to
get a range of values for the parameters that is big enough.
Consequently a bitmask is not really suitable, and I think it makes more
sense to use one array of bytes (unsigned char) and another of two bytes
(unsigned short) as seen in the Unit class. But I explain in detail
which kind of parameters have which function in the force computation
and why.

TODO:
- The Objective Function (can be pretty simple, sth. like: Damage caused
to living enemies + 2*(health of killed enemies) + 1/2*(health of own
units, summed up for all simulations)
- The Optimizer class and all steps that are needed to implement the
Genetic Algorithm.