(SERVER-61) improvements to the ExecutionStub

* The execution stub now returns an instance of
  Puppet::Util::Execution::ProcessOutput, as per the contract of
  Puppet::Util::Execution.execute.

* Add basic spec/unit tests

* In java, close the reader used to read the process's STDOUT.

* In ruby, close the file handles passed-in for STDIN, STDOUT, and
  STDERR; we're not using these (this is implemented in java instead),
  but Puppet::Util::Execution.execute does not close them when an
  execution stub is installed.
I'm not sure I follow this. When we execute an external process, Java will create pipes between the parent and child process. Each pipe has a fixed size buffer, often 4KB. If the child process writes more data than the size of the buffer, the child process will block until the parent drains data from the pipe. As a result, the above code can deadlock (child is blocked writing to pipe, parent is blocked waiting for child to exit). This is mentioned in the [javadocs](http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html), "Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, or even deadlock." Usually, you need to spawn a reader thread to drain both stdout & stderr (independently), and then the parent process blocks waiting for the child to exit.