Returns a new String which is the same as the original except the first letter
will be lowercase except for some special cases as per JavaBean handling.
In particular, if the first two letters are both uppercase, e.g. URL,
then no change of case occurs.
Originally inspired by the method with the same name in java.lang.Introspector.
property - a string representing the name of a JavaBean-like property
This is the complement the behavior of the decapitalize(string) method.
We handle names that begin with an initial lowerCase followed by upperCase
with special JavaBean behavior (which is to make no change). See GROOVY-3211.