Triggering of GfxEgnine and PhyEngine started

- GfxEngine: 60Hz
- PhyEngine: 15Hz

A main menu, level start and end menu were added
A state machine was added to jump from menu to menu and to the level engine
The data type EngineStateType was implemented to select the current state (entered menu)
The menus (text output, selectable buttons) were added
cleanup
The exit data type was added

- Added to PhysicsEngine, TextEngine, LevelConfig and data types
The Exit function was added to PhysicsEngine

The level exits if player taps on an exit object.
states ALIVE, ... for player class were added

- the states ST_ALIVE, ST_EXITING, ST_EXITED were added in class DOTPlayer
- the state ST_EXITING has 4 sub-states, implemented by counter
- sub-states are displayed by TestEngine class
LevelEngine class created

- The level engine code of the GameEngine class was moved to the LevelEngine class
- The level engine has also states
tasks and data of game and level engine restructured

- Level engine includes physics engine and object field. It doesn't longer call the text engine
- Game engine includes level engine, text engine and time engine.
drawField call was replaced by drawLevel (cyclic dependency solved)

- new file SDig_TextEngineTypes with the button type enums was added to solve cyclic dependencies in LevelEngine and TextEngine.
- the text engine function drawLevel was implemented to avoid getting members of LevelEngine within GameEngine
cleanup

- ButtonType was removed (-> previously moved to SDig_TextEngineTypes.h)
- print field functions are made to private
exit condition was updated (sand, time, exit)

- The exit (DOTExit) has the states closed and open and can only be entered if the required amount of sand was eaten by the player.
- Time counter and eaten sand counter were added to the physics engine
- The text engine distinguishes between an opened and closed exit.
- The the required amount of sand to eat was added to the level config.
- An exit object reference is stored in the object field class for an easy access.
back-reference of DataObject to the objFieldEntry

A back-reference of the DataObject to its parent objFieldEntry was implemented to store only references to the data objects of player and exit in the level engine.

- SDig_ConfigData: an easier level exit was implemented for testing
- SDig_DataObject: back-reference to object field entry was implemented
- SDig_LevelEngine: player and exit types in objField were updated
- SDig_PhysicsEngine:
  - exit conditions of function movePlayer() were sorted/simplified
  - exit object was added to player physics
- objField: data object and not the object field entry of the exit and player is stored
player physics does not longer returns with the obsolate new player object field entry

- because only the players data object that refers to its object field entry is used
sand counter was moved to DOTPlayer

- add back reference from objField in DOTPlayer to get access to its entries
- count eaten sand in DOTPlayer object
required sand value and was move the the exit object

- removed from physics engine and added to SDig::DOTExit
- the exit present its internal state and the sand count via public functions
- the objField hold a reference to the exit object (the exit object has an back-reference to the objField)
object field holds reference of player's and exit's objects

- this simplifies the access the the member functions of this objects
- but some other changes had to be implemented to
- mostly function implementations were moved from header to cpp file
- a reference to the overlying DataObject was added to the DOTPlayer class
cleanup of setting exit's and player's references

- both DOTExit and DOTPlayer have an back-reference to their data object and object field
- an initReferences() function was added
- .gitignore was updated
namespace ObjField was created and class Field was added

- the sub directory ObjField was creaded for the classes that are located in the namespace ObjField
- the former class objField was renamed to Field and move to the namespace ObjField
class objFieldEntry was renamed and moved to ObjField::Entry

- the file name was renamed to Entry.* and moved into the directory ObjField
- the public members were make to private and functions were created to access them
- these functions are now used by the other classes