improved proc_dump() and Sandbox.dump() for error differentiation
multiple improvements and fixes

1. fallback to hybrid sync/async profiling

the full asynchronous profiling introduced in 0.3.5-2 may fail to update
the resource usage of some very short tasks and leave some statistics zero.
the hybrid profiling makes sure to update stat before handling events.

2. prevent program overrun in trace_kill()

certain linux kernels may leave a SIGKILLed program to overrun for a few
instructions; and the overrun may lead to undesirable side effects or even
security risk. the improved trace_kill() performs opcode flush and syscall
replacement to eliminate risky side effects.

3. refactor testing framework to verify the fixes

the unittest framework has been largely refactored. new test caess are
included for verification and benchmarking.