refactor HooksManager and remove conditionallyInitialize to handle functions without locks in MT
the only reason conditionallyInitialize exists is because when loadingLibraries is failing, the lm_collaction_ is reset to null, or if loadLibraries is not called, to be able to call related functions.
In the state when lm_collection_ is null , any function needing it will create a dummy one by calling conditionallyInitialize.
If we initialize lm_collection_ on constructor (with a dummy just like conditionallyInitialize does), and also initialize when loadLibraries fails, we can completely remove conditionallyInitialize.
This is important because it is not safe to use conditionallyInitialize from hooks points without locking, so we can completely avoid this by explicitly initializing lm_collection_ and never have to handle the null case.
needed by #1137