Add scenario showing func literals still panic

With the runtime controls changes we shouldn't still be writing
function literals to just panic.  They need to contain the original
function literal code.
Handle function literals as a special case

If we encounter a function literal, we can't use exprString as it
doesn't have enough information to copy the body from the original
file.  So now exprString will just panic, and we have to treat
*ast.FuncLit values as a special case when we encounter them.
Make literal/exprString into methods of mockGen

This means that exprString can have access to the information it needs
to recover the code from the original input file for func literals.
The previous approach of making func literals a special case was just
not going to work - as there are so many places a func literal can be
placed.