Add PatternGrammar class (under implementation)

Add PatternGrammar class which is for pattern matching.
Fix a bug in DispatchExpression, update CommonExtensions

Fix a bug about type inferring in DispatchExpression, for delegate objects
which is not passed as variables, etc, not lambdas.
Update CommonExtensions.
Implement term rules in the pattern grammar

Implement term rules (texts, numbers and identifiers) to make patterns for
specified value in the pattern grammar.
Add rules for dots and colons in the pattern grammar

Add rules for dots and colons (special list notations) like `foo`.`bar` to
match them in the pattern grammar.
Support covariance and contravariance in generic types

Support covariance and contravariance in searching common generic types (to
make arrays, etc.)
Fix bugs and modify the behavior of Type.IsAppropriate extension method.
Remove unused internal extension methods.
Fix a bug in Type.IsAppropriate

Fix a bug in Type.IsAppropriate extension method, wrongly fails when passing
arguments which is not a generic type definition but is not a constructed type.
Implement cache of AmbiguousParameterExpression

Modify the behavior of AmbiguousParameterExpression.Reduce method to return
only one instance per expression object to suppress misreferences.
Implement YacqEvaluatingCombinator

Implement YacqEvaluatingCombinator, which provides Evaluate-based expression
parser combinators.
Modify the implementation of term rules in the pattern grammar to match values
with new Evaluate-based combinators.
Fix associations of Evaluate-based combinator rules

Unite rules about Evaluate-based combinator rules to fix operator associations.
Implement range quantifier in the patten grammar

Implement range quantifier as an unary operator in the pattern grammar.
Implement 'as' operator rule in the patten grammar

Implement a new 'as' operator in the pattern grammar to capture patterns.
Merge branch 'feature/pattern-grammar' into develop