Condition support

This PR adds support for defining and executing conditions in the engine.

The system is somewhat more flexible than just setting "conditions" following the 1.5 concept. 
For demonstration, a Visibility component is also provided.
Also conditions have been added to timers, touches and effects.

This PR is better reviewed by commit.

For quick demoing on the visibility, launch the cool demo.
Also, run: TouchesTest, TimersTest, VisibilityTest.