(PUP-2129) Fix issues with false interpolation start (slurpfunc)

This is a fix for the reported issue that 'slurpfunc' is an unknown
method. Thankfuly that problem masked a much worse problem in that any
false interolation start e.g. $%a was not correctly implemented, and
there were no tests that covered this.

The same issue also existed for interpolation in heredoc.
This commit fixes the interpolation problem, and adds tests.