Potential fix for 'exec' failure case

 - Adding more robust code to handle the case where the exec call within fails. Now, spawn will raise an exception if this happens.
 - Adding a test to ensure this exception is raised when an invalid binary is run
Theoretically, some infintesimal fraction of the time, this could accidentally generate a valid executable and do something random on your computer. I expect that's massively unlikely, but I might hardcode some nonsense bytes so it's always the same.