Merged changes from feature/scl to master.
This commit contains lots of SCL compiler and runtime changes:
* New CHR-rule based sublanguage. This change alters meaning of
when-keyword and so some code using when may break.
* Removed type classes Eq and Hashable. Compiler now generates and uses
Java methods equals and hashCode. This change is needed for better
interoperability with Java code.
* Type based overloading for symbols imported from different modules
* Some expressions ignore their return value (statements in
do/let/where, if and match cases if the return value of if/match is
ignored). These expressions can have any type and if/match expression
branches may have different types. Also if-expressions may have only
else branch. If the return value of apply-experssion is ignored, the
expression cannot be partial application that does not have
side-effects.
* View pattern support
(https://ghc.haskell.org/trac/ghc/wiki/ViewPatterns)
* Lambda-match support
(https://ghc.haskell.org/trac/ghc/wiki/LambdasVsPatternMatching)
* String interpolation can be used also in patterns
* SCL compiler regression test suite has been moved to a new bundle
org.simantics.scl.compiler.tests
* Improvements to SCL module editor syntax coloring
* SCL compiler refactorings, for example all name constants are now in a
dedicated class Names and CompilationContext merging old context classes
* Improved byte code for comparisons
* Improved code generation from string interpolation
* Anonymous object support in SCL backend (not yet frontend support)
* Bugfixes and new regression tests
refs #6888
Change-Id: I9d4c001d0323069d3b86a83369fa3581f02ee305