Massive cleanup, bug fixes and major improvements

• Only way to hook is via NSObject category now
• Hooking has been made a lot easier (see test project)
• Prevented hooked methods to be used as original method when hooking
twice (the real original method will always be returned as original
method now, no matter how many times the same hook calling the original
implementation is applied)