Overhaul of set matching to improve efficiency

- During set matching, sets are now internally represented as HashSets.
- Code generator recognizes several common patterns:
  - literals + single (typed) variable
  - literals + single multi-variable or (typed) splice variable.
  
The overall effect is a 10-20x faster execution than set matching in
Rascal interpreter.

NOTE: 4 tests currently fail.
Merge branch 'master' of https://github.com/cwi-swat/rascal.git