Incorporates timeout mechanism into ExternalRuntime for Ruby 1.9 and later

Uses Ruby 1.9 IO.popen options that result in Kernel.spawn under the covers. This enables a simple timeout mechanism to be implemented.