Removed thread::self in favour of allowing interruption through a thread::id; no longer requires DuplicateHandle