Split JIT code into several files
Split JIT into multiple classes

This is a VERY large commit... I changed so much stuff that it
seemed pointless to split this into multiple parts.

There now can exist multiple backends (but there is only asmjit
backend at the moment, I've been thinking of adding something
like LLVM-based backend) and the user is able to swith between
them via the JIT_BACKEND environment variable.

Unofortunately instruction lookup (searching native code by its
AMX address) has become slower (from O(1) to O(n)) but it is
possible to implement binary search (which is O(logn)).

I also had a thought about making the code position independent
so it would be possible to copy it around and CompilerOutput
would become unnecessary but that seems like a lot of work.
Fix memory leak in AmxLoad()
New project structure
Replace intrinsic methods with polymorphic objects
Fix Linux build
Move asmjit sources to jit folder
Move jit and sdk to plugin
Move subhook to plugin
Eliminate #include dependency between plugin and asmjit
Fix JIT not getting called due to silly mistake
Add a mesage that is shown whenever JIT fails to run

This is to prevent possible mistaked (see previous commit!).
Get rid of push_axm_stack()
Switch to binary search in get_instr_ptr()
Add macros for override, final and delete keywords
Remove unused files that are not part of SDK
Remove pointer to data from the RuntimeData block
Avoid extra call to emit_get_amx_data_ptr()
Fix full_output.txt being created in wrong directory
Remove frm/stk protection in sysreq_d_helper()