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. This PR sets the base for implementing small flow structures that may be able to execute code that depends on expressions. Examples:
```java
  if(expression){
     // Do something
  } else {
     // Do other stuff
  }
```
Or
```java
  while(expression){
     // Do something
  }
```

For demonstration, a Visibility component is also provided.

This PR is better reviewed by commit.

For quick demoing, launch the cool demo.