Add a transformer for getClass()'ing.
Revert "Revert "Support calling single arg enum methods (incl. setters) of DSL objects with strings.""

This reverts commit a960c2ad0c80ee6fdb87d2249fbf990eebc209c5.
Add a CollectionUtils.score() method.

The intended use is for sorting items by a derived property that is expensive to calculate.
Add method for finding a single method in an inheritance sensitive fashion.
Fix calling instance methods during construction of Groovy classes.

Now that we route all method calls through DynamicObject, we need to specially handle the case where methods are being called in the constructor. This is because the field introduced in the subclass that actually handles method calls will not have been created yet.
Add support for calling private methods in our dynamic object protocol.

After the change to route _all_ method calls through our dynamic stuff, calling private methods (internally) broke. The Groovy MOP treats private methods differently, and doesn't expose them for calling from the outside (which is what we are doing). This adds special handling for private methods, trying to emulate Groovy's method dispatch.

 This is implemented as a fallback for when the normal Groovy dispatch system fails to find the method. This is based on the assumption that Groovy will be faster at dispatching method calls than us because it has received more optimisation in this area. Therefore, only when we fail to dispatch via Groovy's MOP do we fall back to our search for private methods.

 This is very likely to introduce some overhead for calling private methods, but shouldn't introduce any overhead for calling non private methods.