Fixes static initialization order fiasco.

Works at last! Well, at least it doesn't crash before main.

This commit fixes static initialization order problem. Implemented a portable
way of initializing a singleton self_trace_t. We are making progress
@pmccormick.

In order to avoid this problem in the future, please consult the following
advice:
http://www.parashift.com/c++-faq-lite/static-init-order-on-first-use.html

Also see:
http://www.parashift.com/c++-faq-lite/static-init-order.html