ot_terminate(): remove mutex

Unclear purpose, could cause deadlock on recursion
Fix misleading comment.

Signal handlers are defined further down.

If `OT_SIGNAL_HANDLER` is defined, the initialization routine in
`OT_API::InitOTApp()` calls `OTLog::SetupSignalHandler()`.
Check for exception before re-throw, fix comments.

Also call std::abort() instead of abort().
Use print_stacktrace() instead of inline code

The `print_stacktrace()` function defined in `core/util/stacktrace.h`
essentially does the same thing and also does the platform-specific stuff. It
should be used in a few other places in this file as well.

This still prints stacktrace twice in OT_FAIL* and OT_ASSERT* macros (and three
times if we enable signal handlers).

The `print_stacktrace()` call from OTLog::logAssert could be skipped if we know
for sure that `ot_terminate()` is our handler for `std::terminate()`. Maybe
introduce a flag `OT_ASSERT_PRINT_STACKTRACE` to control that.