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

Support covariance and contravariance in searching common types.
Fix and modify Type.IsAppropriate extension method.
Remove unused internal extension methods.