fix(util/thread): add missing declaration when compiling with Boost

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util/thread): add LEAN_THREAD_PTR macro, it uses boost::thread_specific_ptr instead of thread_local keyword when we compile with Boost

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(*): replace LEAN_THREAD_LOCAL with MK_THREAD_LOCAL_GET, the new macro uses the Boost thread_local_ptr instead of 'thread_local' directive

Motivation: clang++ on OSX does not support 'thread_local'.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util/thread): add custom MK_THREAD_LOCAL_GET macros for when LEAN_MULTI_THREAD is not defined

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
fix(CMakeLists): use Boost_LIBRARIES

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util/thread): add simpler MK_THREAD_LOCAL_GET macro for when BOOST=OFF and MULTI_THREAD=ON

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(CMakeLists): hide compilation warnings due to Boost when using g++ on OSX

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(*): minimize dependency on thread local storage, simplify MK_THREAD_LOCAL_GET

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>