Fix VMException copy constructor

This was not copying the reason from the passed exception.
Add checks we have at least method information

This makes sure we don't end up with a null pointer dereference in the
jit helper.
Fix memory leak in IO#sysread

If we are interrupted and raise an exception, we have to make sure to
free the malloced buffer if that has been allocated.
Set encoding right after we setup the string
Remove dead assignment because of immediate return
Mark functions as NORETURN that always raise a C++ exception