Change how popen3 is called in Executable

Calling popen3 in the format of popen3(a, b, c...) requires all the
arguments in the argument string to be separated and into an array and
then splatted. This wasn't caught previously because only acceptance
tests use the Executable helper and none of them used a valid argument
string (tests were only made for invalid strings and empty strings).

Invoking popen3 with only one string containing both binary and
arguments, then everything is split correctly.

Also use a private reader instead of evaluating the instance variable.