This class extends java.lang.Thread class to provide clean and reliable
thread terminating capability. It keeps a stack of terminate hooks (per
instance of TerminateThread) which are added by a programmer at runtime.
Thus when developer invokes interrupt on TerminativeThread's instance,
it checks all the available hooks and invokes each one them in the order
in which they were added
Note that the default interrupt function available on Thread works
only when the thread is in sleep/wait state.