Kernel: Added real support for thread and event blocking

- SVC: Added ExitThread support
- SVC: Added SignalEvent support
- Thread: Added WAITTYPE_EVENT for waiting threads for event signals
- Thread: Added support for blocking on other threads to finish (e.g. Thread::Join)
- Thread: Added debug function for printing current threads ready for execution
- Thread: Removed hack/broken thread ready state code from Kernel::Reschedule
- Mutex: Moved WaitCurrentThread from SVC to Mutex::WaitSynchronization
- Event: Added support for blocking threads on event signalling

Kernel: Added missing algorithm #include for use of std::find on non-Windows platforms.
Kernel: Made SyncRequest not pure virtual, with a default implementation of error (as this is not required for all kernel objects)
Thread: Fixed bug with ResetThread where cpu_registers[15] was being incorrectly set
Core: Changed HW update/thread reschedule to occur more frequently (assume each instruction is ~3 cycles)
Core: Cleaned up SingleStep(), updated default LCD refresh to assume each instruction is ~3 cycles
Kernel: Updated several member functions to be const
Mutex: Moved ReleaseMutex iterator declaration to be inside while loop.
HLE: Updated various handle debug assertions to be more clear.
Kernel: Updated various kernel function "name" arguments to be const references.
HLE: Updated all uses of NULL to nullptr (to be C++11 compliant)
SVC: Moved declaration of "wait" variable in SendSyncRequest for improved readability.
Thread: Updated VerifyWait to be more readable (but functionally the same).
Thread: Moved position of * in arguments.
SVC: Cleaned up function wrappers to pass in correct argument types.
HLE: Removed usnused EatCycles function.
Thread: Cleaned up VerifyWait, fixed issue where nullptr msg could unnecessarily be logged.
Thread: Renamed occurrences of "t" to "thread" to improve readability.
SVC: Renamed all function wrapper templates to Wrap, moved to HLE namespace.
HLE: Moved "PARAM" and "RETURN" macros to function_wrappers.h (this is only module where they are needed).
Event: Updated several log messages to be assertions.