(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'm reading this correctly, but it looks like the caller passes in file descriptors for stdin, etc, and calls an execute method, and prior to returning to the caller, the file descriptors are closed? If so, I don't think we want to do that. It's preferrable for the caller to retain ownership of the file descriptors, e.g. they may redirect the child's stdout to a file, and then the caller can rewind the stream to read the output from the execute command. Also, it forces the caller to use try-finally to guard against exceptions. For example, I've seen situations where the caller assumes the execute method will close them, but an exception happens in the called method, but before the descriptors are closed, e.g.

<pre>
def execute(command, stdin, stdout, stderr)
  call_some_method_that_raises

  [stdin, stdout, stderr].each { |io| io.close rescue nil }
end
</pre>

So the caller thinks the execute method will close them, but the execute method doesn't guard against exceptions that can be raised internally, and no one closes them.