GROOVY-6362: Support for dynamic method calls in @CompileStatic
   * must be activated thanks to a type checking extension
   * makeDynamic(call) would turn an unresolved method call into a dynamic method call
   * makeDynamic(call, classNode) would turn an unresolved method call into a dynamic method call returning an object of the classNode type
   * makeDynamic(propertyExpr) would turn an unresolved property into a dynamic property lookup
   * makeDynamic(propertyExpr, classNode) would turn an unresolved property into a dynamic property lookup returning an object of the classNode type
   * makeDynamic(variableExpr) would turn an unresolved variable into a dynamic variable lookup
   * makeDynamic(variableExpr, classNode) would turn an unresolved variable into a dynamic variable lookup returning an object of the classNode type
   * makeDynamic automatically suppresses type checking errors by setting the handled=true flag to true
   * for method calls, makeDynamic returns a dummy MethodNode, allowing to suppress the type checking error

It is expected that the extension writer provided appropriate return types.
GROOVY-6362: Support for dynamic method calls in @CompileStatic
   * make sure Foo.metaClass.bar = {...} can be handled through an extension
   * add buildListType(componentType) and buildMapType(keyType,valueType) for lists/maps (helper method)
   * add isStaticMethodCallOnClass helper method for easier detection of static method calls on a specific receiver type
GROOVY-6362: Support for dynamic method calls in @CompileStatic
   * refactored isStaticMethodCallOnReceiver into two distinct methods
   * introduced extractStaticReceiver(methodCall) for that purpose
GROOVY-6362: Support for dynamic method calls in @CompileStatic
   * fixed dynamic method calls if made inside a closure
   * add a unit test/example on how to deal with builders