Fix compile warnings
New hooking system

The new implementation uses trampolines to jump to the original code
as opposed to the previous system where the hooks were constantly
removed and re-installed.

It more complicated as well since there's a need to decode first few
bytes of the original code in order to determine how much we need to
keep (in the trampoline). Thus I wrote a simple length disassembler
with support for most common instructions found in function prologs
such as push, mov, sub and so on.

This also resolves the issue where if a callback is called from
another callback it is executed only in those plugins that haven't
yet uninstalled their amx_Exec() hook. It usually happens when on
of the plugins links with the static library or amalgamation.

Fixes #110.