Re-implement Thread#kill by adding new RaiseReason rather than complicating the existing ad-hoc way of raising Exceptions. Conceputually, Thread#kill isn't quite like exceptions. If the exception approach wasn't replaced, it would be neccesary to really specially handle Thread::Die. Make some failing specs pass. Also, Fix #864.