Protect global list of functions from concurrent access

The list returned from TROOT::GetListOfFunctions needs to be protected
from concurrent access to allow use of TFormulas on different
threads.
Protect global list of TFormulaPrimitives
Thread safety fixes for TCint

-use thread_local for statics which are being used as return values
-use C++11 initializers to allow static containers to be const
-add lock to protect fgSetOfSpecials
Make function static return values thread_safe

Funciton level statics which are being used as return values from
the function are changed to thread_local. This is needed to avoid
multiple threads changing the values while they are being used.
Added missing locks when calling gCint

Added calls to the gCINTMutex lock when calling gCint methods. These
are needed to avoid problems while concurrently using TFormula.
Make TClass::fIsAMethod setting thread safe

Caching and initialization of TClass::fIsAMethod have been changed
to make them thread safe and for calls to the TMethodCall can happen
concurrently.
Call TROOT::GetGlobalFunction instead of GetListOfGlobalFunctions

Since the global function list needs to be locked to be thread safe,
the simplest way of avoiding having to take the locks outside of
TROOT is to call GetGlobalFunction instead.
Lock access to gROOT->fGlobalFunctions

The list of global functions must be protected from simultaneous
writes/reads.
white spaces
Use #if __cplusplus >= 201103L to mark C++11 code
thread_local -> TTHREAD_TLS
Fix #if direction