Catch exceptions on rustc build errors

When rustc returned a nonzero code, an unhandled exception was raised.
This catches the exception and prints a human and tool-friendly report.