Add tests for constraint handling
Fix a bug in constraint rule class.
Introduce 'Param' annotation.
Extract 'Map' interface from Tuple class and introduce immutable tuple class (UnmodifiableTuple).
  Now existing Tuple (which is mutable) is called 'TupleImpl'.