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.