ASTMatcher: Add constraints to pattern matching
   * work in progress: add a MatchingConstraints class corresponding to the constraints being applied to the pattern
   * constraints are defined using a DSL called through the ASTMatcher.withConstraints method
   * rename some parameters in ASTMatcher to improve readability of algorithms