Optimize: Generate compile substitution method

Multiple `dup` and `sub` calls on the runner source template get costly. Since the template syntax we use is basically a lightweight ruby interpolation, lets just treat the runner source templates as big heredocs that are evaluated in the `ExternalRunner` instance.