Core/MMaps: Started this new branch as my playground for mmaps.
Made some refactoring
Free memory taken by mmaps when a map is destroyed.
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Tools/MeshExtractor: Fixed loading of locale patch MPQs (This fixes DBC extraction)
Core/MMaps: MMaps are now correctly loaded into TC

P.S: They do behave better in some places, but are still a bit weird in some others, will have to look into that.
P.P.S: I'll have to re-implement all the previous PathGenerator code
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Core/MMaps: Use an enum for the poly flags
Core/MMaps: Separate the path from the walls to prevent falling off the edges client-side and improve the behavior.
Thanks to Game2Mesh user in ownedcore.
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Core/MMaps: Bump mmaps version to 5
Tools/MeshExtractor: Create the mmaps output directory automatically.
Tools/MeshExtractor: Rewrote the MeshExtractor to use a custom Stream class instead of FILE pointers, this way we avoid the errors that were caused by reaching the maximum limit of the tmpfile function, and the maximum number of open file streams at any given time.
P.S: This was no easy task, damnit.
Tools/MeshExtractor: Fixed a few errors under GCC and changed a bit how the GenericCache class works.
Tools/MeshExtractor: Code cleanup and fix threading issue

Remove GenericCache:Insert() as no longer needed.
Mark BuilderThread as not free anymore as soon as they are assigned to a Tile.
Fix signed/unsigned comparison mismatch.
Tools/MeshExtractor: Fix memory cleanup

Free memory created with new[] with delete[] .
Tools/MeshExtractor: Fixed a logic mistake.
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Tools/MeshExtractor: Added some locks because concurrency.
Race conditions were detected with a race condition detection tool.
Tools/MeshExtractor: Fix uninitialized values

Fix uninitialized struct padding bytes written to output files. These bytes are actually ignored when loading these files, so the main point of this fix is to shut up the Valgrind log.

Valgrind log:
 Syscall param write(buf) points to uninitialised byte(s)
  at : ??? (syscall-template.S:81)
  by : _IO_file_write@@GLIBC_2.2.5 (fileops.c:1270)
  by : new_do_write (fileops.c:546)
  by : _IO_do_write@@GLIBC_2.2.5 (fileops.c:519)
  by : _IO_file_xsputn@@GLIBC_2.2.5 (fileops.c:1341)
  by : fwrite (iofwrite.c:43)
  by  BuilderThread::svc() (ContinentBuilder.cpp:56)
  by : ACE_Task_Base::svc_run(void*) (in /usr/lib/libACE-6.0.3.so)
  by : ACE_Thread_Adapter::invoke_i() (in /usr/lib/libACE-6.0.3.so)
  by : ACE_Thread_Adapter::invoke() (in /usr/lib/libACE-6.0.3.so)
  by : start_thread (pthread_create.c:311)
  by : clone (clone.S:113)
 Address 0x4039011 is not stack'd, malloc'd or (recently) free'd
 Uninitialised value was created by a stack allocation
  at: BuilderThread::svc() (ContinentBuilder.cpp:30)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps_rw
Tools/MeshExtractor: Don't load neighbor ADTs each time we generate an ADT.