Allow threads to self remove from liveliness checking
Allow threads to self remove from liveliness checking

Threads which call habitat_common::sync::mark_thread_alive and then
exit (intentionally or due to error) will no longer be reported as
likely deadlocked if they call ::mark_thread_dead before exiting.

Threads can indicate a normal, or erroneous error to mark_thread_dead.
Threads which exited with an error will be logged along with an
explanation of the error.

Signed-off-by: Jon Bauman <e6c6a4db54ad11b4de69fed67139594b59f3444f@users.noreply.github.com>

rsertelon/habitat,rsertelon/habitat,habitat-sh/habitat,rsertelon/habitat,rsertelon/habitat,habitat-sh/habitat,habitat-sh/habitat,habitat-sh/habitat,rsertelon/habitat,habitat-sh/habitat,rsertelon/habitat,rsertelon/habitat,habitat-sh/habitat,habitat-sh/habitat,habitat-sh/habitat