Mutex: Properly lock the mutex when a thread enters it

Also resume only the next immediate thread waiting for the mutex when it is released, instead of resuming them all.
Mutex: Release all held mutexes when a thread exits.
Mutex: Remove some forward declarations

Moved Mutex::WaitSynchronization to the end of the file.
externals: Add boost submodule.
Integrate Boost into build system and perform a trivial cleanup in vertex_shader.cpp.
StringUtil: Perform some minimal cleanup.
CFG:U: Store country codes as u16 instead of char pointers, and return the correct error in GetCountryCodeID.
Merge pull request #239 from linkmauve/country-codes

CFG:U: Store country codes as u16 instead of char pointers, and return the correct error in GetCountryCodeID
Merge pull request #256 from Subv/mutex

Kernel/Mutex: Properly lock the mutex when a thread enters it
MemMap: Renamed "GSP" heap to "linear", as this is not specific to GSP.

- Linear simply indicates that the mapped physical address is always MappedVAddr+0x0C000000, thus this memory can be used for hardware devices' DMA (such as the GPU).
Common: Add "sysdata" to GetUserPath and cleanup.
DSP: Added stub for ReadPipeIfPossible.
Merge pull request #268 from bunnei/dsp-read-pipe-if-possible

DSP: Added stub for ReadPipeIfPossible.
Merge pull request #261 from neobrain/boost

Add Boost as a submodule and add some minor cleanups using Boost.Range
APT_U: Added GetSharedFont service function.
Merge pull request #267 from bunnei/apt-shared-font

APT shared font loading
Remove redundant include from common_funcs.h
Added missing include in common_funcs.h
doxygen: Enable EXTRACT_ALL so that Doxygen identifies namespaces
Add SCOPE_EXIT macro to conveniently execute cleanup actions