CoralVM-PHP: Fixing logic that separated tokens into layers

There was an error when a context was more than one level deeper than the parent context, the TokenLayer class then jumped directly into the last context and totally skipped the parent context, which was itself a child context of the currently separated layer.
CoralVM-PHP: Fixing some code paths with default values in expression separating logic
CoralVM-PHP: Introducing three new contexts for if-block expressions

These contexts are for the if branch, elsif branches and the else branch respectively. The condition layer is embedded in the if/elsif branches.
CoralVM-PHP: Implementing if-block AST nodes building, simplifying implementation of operator nodes building