Docile keeps your Ruby DSLs tame and well-behaved