Core/Thread: Fix race condition converting time values to local time

Replace thread-unsafe localtime() http://www.cplusplus.com/reference/ctime/localtime/ with thread-safe portable ACE_OS::localtime_r() .

Helgrind log:
 Possible data race during read of size 4 at 0x6F183C0 by thread #1
 Locks held: none
  at 0x14E72E3: World::InitDailyQuestResetTime() (World.cpp:2772)
  by 0x14E3A01: World::SetInitialWorldSettings() (World.cpp:1790)
  by 0x101122A: Master::Run() (Master.cpp:164)
  by 0x101740C: main (Main.cpp:142)

 This conflicts with a previous write of size 4 by thread #2
 Locks held: none
  at 0x6C2D3BA: __tzfile_compute (tzfile.c:797)
  by 0x6C2D036: __tz_convert (tzset.c:627)
  by 0x164146C: LogMessage::getTimeStr(long) (Appender.cpp:23)
  by 0x1641550: LogMessage::getTimeStr() (Appender.cpp:31)
  by 0x1641722: Appender::write(LogMessage&) (Appender.cpp:80)
  by 0x1633FCE: Logger::write(LogMessage&) (Logger.cpp:83)
  by 0x16433D8: LogOperation::call() (LogOperation.cpp:29)
  by 0x16428A4: LogWorker::svc() (LogWorker.cpp:45)
Core/Timer: Better handle system clock changes

Change IntervalTimer::Reset() behavior to handle system clock changes forward and backward.
This fixes IntervalTimer:.Passed() returning true till it catches up to the new time, triggering the event up to "std::numeric_limits<time_t>::max() / _interval" times.
Fixes https://github.com/TrinityCore/TrinityCore/issues/5816
DB/Updates: AI fixups

By @Aokromes, fixes #10733 #10728
DB/Sai: Teron Gorefiend, I am... 

Added horde version for the script also.
Core/SmartScripts: Fixed heap corruption in SMART_ACTION_EQUIP

Closes #10739
DB/SAI: Trapping the Light Fantastic (10674) & Gather the Orbs (10859)

Fixes #7202
Adds support for the Alliance quest also, and makes the orbs go in tandem with the horde version script.
DB/Update: Needs null spawndist
Core/SmartAI: Fixed creatures using SAI not attacking its charmer after it breaks

Closes #7601
DB/SAI: Blowing Hodir's Horn (12977)

Fixes #10749
DB/Cond: Conditions for Hodir's Horn
Core/RBAC: Move group commands to RBAC (using individual permissions)
- group commands moved from cs_misc.cpp to own file
- renamed groupsummon to "group summon"
Core/RBAC: Move pet commands to RBAC (using individual permissions)
- Pet commands moved from cs_misc.cpp to own file
DB/SAI: The Zephyrium Capacitorium(part 1), The Singing Ridge(part 2), Razaan's Landing, Ruuan Weald

Fixes #6322 Fixes #6323 Fixes #6324
Because I hate tabs
Core/RBAC: Move send commands to RBAC (using individual permissions)
Core/RBAC: Move misc commands to RBAC (using individual permissions)
Core/RBAC: Move mmap commands to RBAC (using individual permissions)
Core/RBAC: Move modify commands to RBAC (using individual permissions)
Core/RBAC: Move npc commands to RBAC (using individual permissions)
Core/RBAC: Move quest commands to RBAC (using individual permissions)