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.
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.
APT_U: Added GetSharedFont service function.