Support calling single arg enum methods (incl. setters) of DSL objects with strings.

String values are coerced by using the first enum value whose name is case insensitive equivalent.

 There's a big change in here that now all methods called on enhanced objects go through our dynamic object protocol. This wasn't happening previously.

 The coercing "infrastructure" is very naive and hardcoded to support this one case atm.