Module#delegate checks nilness rather that falsehood if :allow_nil is true, and avoids multiple evaluation of the target method

Notes:

1) I hope nilness is a word.

2) See rationale for avoiding multiple evaluation in a comment in the patch, credit goes to @jeremy for pointing out this gotcha in the existing implementation.

3) Embeds a little joke dedicated to @pixeltrix (it could be worse! :D).

References #10347.
adding test for the symbol refs