Unifying -Ydelamndafy:{inline, method}

Avoid code duplication and use a common approach for
symbol substituion.

I asked Martin "why did the apply method just reuse the parameter symbols
of the lambda verbatim", to which he suggested at the time substitution
wasn't up to scratch to risk anything more principled.

Turns out it still isn't, but I've taken steps to remedy that
in this incarnation of the pull request.