Improve process handling in SpawnedProcess

Details

Description

SpawnedProcess wraps a java.lang.Process and performs various tasks related to process handling. Using external processes from Java is somewhat tricky, in part because of sub-optimal behavior in the methods provided by Process.

I plan to implement the following improvements:
a) Kill the process after a timeout (the clock starts ticking when you create the SpawnedProcess instance).
b) Don't let interrupts stop SpawnedProcess from waiting for / terminating the process.
c) Clean up the Process properly.