Big Refactor of the underlying hook framework.

Now we can use some simple macro to do hook job. The default behavior
of Json output is the same as the original ones(except those we had modified)
The output of Json entry is now one line per entry, this will help the test.
The prototype of output_event() is changed to accept variable arguments.

* output.c: Made a great refactor to the hook framework
* io.c, defs.h: Modify to use the refactored framework
* syscall.c(trace_syscall_entering\exiting): Modify almost all of
the entering\exiting function to use the Json hook framework.